我已經編寫了一個基本的PS腳本,以便卸載在文本文件($ servers)中定義的所有服務器上的文本文件($ appname)中定義的任何程序。PowerShell腳本從服務器列表中卸載多個程序
手動運行此命令,但沒有變量,它可以正常工作,但是通過Jenkins或PS命令行運行腳本時,它只是掛起,所以我甚至無法調試,任何人有任何想法?
[array]$servers= Get-Content "D:\Jenkins\BuildUtilities\Citrix\CitrixServerList.txt"
[array]$appname= Get-Content "D:\Jenkins\BuildUtilities\Citrix\ProgramsList.txt"
ForEach($server in $servers) {
$prod=gwmi -ComputerName $server Win32_product | ?{$_.name -eq $appname}
$prod.uninstall()
}
澄清:通過運行手動我的意思是運行以下: gwmi -ComputerName CTX-12的Win32_Product | ?{_。Name -eq「Microsoft Word」}
Microsoft Word是一個示例。
編輯您的問題,以澄清到底什麼「工作正常」 - 你是什麼運行「手動沒有變量」?你是從你的工作站上運行的嗎? Jenkins和您的工作站上的PS命令行,還是他們在不同的機器上? –
嗨邁克,請道歉請參閱我的編輯@ MikeSherrill'CatRecall' – jto
好吧,您可以開始添加線路,告訴您當前正在卸載哪個產品以查看它掛在哪個服務器和產品上,以查看是否存在趨勢。 '$ appname'是一個數組。 '-eq'不是這種方式的數組運算符。你需要使用'-contains'或'-in'。此外,我不知道你是否可以一次調用'.Uninstall()'所有數組項目/一個好主意。 '$ appname -contains $ _。name'或'$ appname'只有一行嗎? – Matt