image

SCCMのコンプライアンス設定を使って、ローカルのアドミニストレーターグループに特定のグループが入っているかどうかを検出する

今回はSCCMのコンプライアンス設定の1つの例として、ローカルのアドミニストレーターグループに特定のグループが入っているコンピューターを抽出し、さらには修正まで行ってみたいと思います。

まず、コンプライアンス設定として構成項目を作成します。

image

 

今回はローカルアドミニストレーターグループに対してTestGroupが入っていたら、それを検出するようなものを作成してみましょう。

image

 

image

 

image

ここで、条件を追加します。

image

色々と設定の種類が利用できますが、今回は結構複雑ですので、スクリプトでロジックを書いてしまいたいと思います。

 

image

スクリプトでブール値を返すように構成して、スクリプトを追加します。

 

とりあえず今回は簡単に以下のようなスクリプトで実装してみました。

$targetGroup = “TestGroup”

$strComputer = hostname
Get-WMIObject Win32_Group -filter “domain=’$strComputer'” | Where-Object {$_.Name -eq “Administrators”} | %{
$computer = [ADSI](“WinNT://” + $strComputer + “,computer”)
$Group = $computer.psbase.children.find($_.name)
$members= $Group.psbase.invoke(“Members”) | %{
$_.GetType().InvokeMember(“Name”, ‘GetProperty’, $null, $_, $null)
}

if ($members -contains $targetGroup) {
“NonCompliant”
} else {
“Compliant”
}

}

image

 

image

 

image

コンプライアンス規則を新規に作成し、設定します。

 

image

 

image

これで、ローカルアドミニストレーターグループに「TestGroup」というグループが存在していない状態が正しい状態である、ということが定義できました。

 

image

 

image

 

これで構成項目ができました。

次に、この構成項目を使って、構成基準を作成し、展開していく必要があります。

 

image

 

image

 

image

 

image

 

このやり方ではPowerShellを利用しているので、PowerShellの実行を許可するようにコンピューターのポリシーを予め構成しておく必要があります。

 

image

 

image

 

 

割り当てられた構成は、クライアント側でも確認ができます。

image

 

image

検証中で評価を早く行いたい場合には「コンピューターポリシーの取得および評価サイクル」を実行すると良いです。

 

image

上記は新しい構成が設定され、まだ評価されていない状況です。「評価」を押すことで手動で評価を行うことも出来ます。

image

評価を実行すると「対応」状態となりました。

 

具体的な管理対象のリストはサーバー上のレポートで確認出来ます。

image

 

image

 

ちょっとスクリプトが書けてしまえば、「特定の状態にある」ことを確認することが非常に簡単にできることがわかってもらえましたでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です