2012のWSUSをPowerShellで管理する。Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。2012のWSUSをPowerShellで管理する。2012のWSUSをPowerShellで管理する。20129日目の日記です。WSUSが出てから、やりたいことの一つが、PowerShellを使用しての自動管理でした。.NETのインターフェースと参照アセンブリがあったものの、どうも使いづらいというか、使い方がいまいちわからなくて忸怩たる思いをしていました。codeplexやtechnetにもその手のツールやスクリプトがあったようですが、どうもわかりづらかった。2012ではちゃんとコマンドレットがサポートされています。どんなものがあるかはこちらをご覧ください(まだ英語)。PowerShell今回私がやりたかったことは「自動的にItaniumプラットフォームのパッチを拒否して、cleanupまで動かす」ことです。WSUS自身のインストールは説明しませんが、簡単です。Remotesignedを実行しておくことも忘れずに。忘れてはならないのが、PowerShellコマンドレットの追加です。サーバーの役割から追加しておきましょう。ISEを起動して、コマンドにwsusと入力すると、これだけのコマンドレットがあります。この中のコマンドレットを使って、Itaniumプラットフォームのパッチを拒否するにはこうします。Get-WsusServerでWSUSサーバーのオブジェクトを取得します。ホストはローカルのWSUSなので、Get-WsusServerにはlocalhostとポート8530を指定しています。環境に合わせて変えてください。次に、GetUpdates()メソッドを使うと、各パッチの情報が取得されます。ひとつ例を挙げてみましょう。GetUpdates()メソッドで取得したオブジェクトをそのままDeny-WsusUpdateに渡せばいいかというと、そうではありません。Deny-WsusUpdateはGet-WsusUpdateコマンドレットのパイプラインの出力結果を前提にしているようです。一つずつ、Get-WsusUpdateで取得して、Deny-WsusUpdateを実行しています。困ったことに、このパッチの情報にはプラットフォームを判別する箇所がありません。どちらかしかないでしょう。LegacyNameプロパティにIA64という文字列があるかどうか調べる(ちょっと危ないかも)TitleプロパティにItaniumがあり、x64を「含まない」物があるかどうか調べる。二番目はなんだと思われるかもしれませんが、実はItaniumとx64で同じバイナリが提供されているパッチがあります。