PowerShellからSCCM2012を管理

System Center 2012, Configuration Manager (SCCM)シリーズが続いていますが、今日はPowerShellからSCCM2012を管理する方法について確認します。
SCCMのPowerShell対応はSCCM 2012 SP1からなのですが、SCCMではもともとWMIを利用しているので、(その気になれば)SP1でなくても管理は可能でした。

■パッケージの一覧表示
get-wmiobject -class SMS_Package -Namespace RootSMSSite_LAB -ComputerName MyCMServer

■コレクションの一覧表示
get-wmiobject –class SMS_Collection –Namespace RootSMSSite_LAB -ComputerName MyCMServer

■管理ポイントの一覧表示
get-wmiobject -class “SMS_Authority“ -namespace “rootccm” -computer Computer1 | ft Name, CurrentManagementPoint -Autosize

ご覧の様な参照系の操作はまだ1行で実行できますが、パッケージを作成する、プログラムを作成するとなると、
複雑なスクリプトを書かなければなりません。
これでは、使う気になれないですよね。そんなわけでPowerShellからSCCMを管理するのはSP1から、というのが現実的なのです。
さあ、実際に使ってみましょう。

PowerShellの起動とモジュールのインポート

x86のPowerShellを起動して、次のコマンドレットを実行します。

Import-Module “C:Program Files (x86)Microsoft Configuration`
ManagerAdminConsolebinConfigurationManager.psd1”

x86のPowerShellを起動するのは、ConfigurationManager.psd1がx86だからです。
モジュールのインポートができたら、続いてサイトに接続します。

Set-Location <サイトコード名>:

これで、SCCMサイトの管理が可能となります。

コマンドレットの利用

SCCMのモジュールで利用できるコマンドレットは、なんと471個もあります。

image

あまりにもたくさんありすぎるので、ここでは、「エンドポイント保護機能のポリシーを特定のコレクションに展開する」という操作に絞って紹介したいと思います。

1.マルウェア対策ポリシーの一覧を確認する

Get-CMAntimalwarePolicy | ft name

実行結果はこんな感じ
image

2.ポリシーを割り当てるコレクションの一覧を確認する

Get-CMDeviceCollection | ft name, CollectionId –Autosize

実行結果はこんな感じ
image

3.これまでの結果をもとに、特定のコレクションにマルウェア対策ポリシーを割り当てる
ここでは、Win7クライアント(コレクションID CO20000B)にEP for Outbreakポリシーを割り当ててみます。

Start-CMAntimailwarePolicyDeployment –CollectionId “CO20000B” –AntimalwarePolicyName `
“EP for Outbreak”

ここまでで完了です。
これでWin7クライアントのコレクションのメンバにはEP for Outbreakマルウェア対策ポリシーが割り当てられ、ポリシーの設定に基づいてマルウェアスキャン等が行われるようになります。