テキストファイル($ servers)で定義されたすべてのサーバ上でテキストファイル($ appname)で定義されたプログラムをアンインストールするための基本的なPSスクリプトを作成しました。サーバリストから複数のプログラムをアンインストールする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は、例です。 Mattsに従うことを簡単にされている必要があります
正確に「うまくいく」ことを明確にするために質問を編集します。「変数は手動で実行していますか?あなたはあなたのワークステーションからそれを実行していますか? JenkinsとPSコマンドラインはあなたのワークステーションにありますか、それとも別のマシンにありますか? –
こんにちはマイク、申し訳ありませんが私の編集@ MikeSherrill'CatRecall ' – jto
を参照してくださいあなたが現在どの製品をアンインストールしているかを示す行を追加することができますそれはそこにトレンドがあるかどうかを確認するには、 '$ appname'は配列です。 '-eq'はそのような配列演算子ではありません。 '-contains'や' -in'のようなものを使う必要があります。また、すべての配列項目に対して '.Uninstall()'をすぐに呼び出すことができるかどうかわかりません。 '$ appname-contains $ _。name'または' $ appname'には1行しかありませんか? – Matt