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

今回はSCCMのコンプライアンス設定の1つの例として、ローカルのアドミニストレーターグループに特定のグループが入っているコンピューターを抽出し、さらには修正まで行ってみたいと思います。 まず、コンプライアンス設定として構成項目を作成します。 今回はローカルアドミニストレーターグループに対してTestGroupが入っていたら、それを検出するようなものを作成してみましょう。 ここで、条件を追加します。 色々と設定の種類が利用できますが、今回は結構複雑ですので、スクリプトでロジックを書いてしまいたいと思います。 スクリプトでブール値を返すように構成して、スクリプトを追加します。 とりあえず今回は簡単に以下のようなスクリプトで実装してみました。 $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” } } コンプライアンス規則を新規に作成し、設定します。 これで、ローカルアドミニストレーターグループに「TestGroup」というグループが存在していない状態が正しい状態である、ということが定義できました。 これで構成項目ができました。 ...

July 20, 2016 · 1 min · 胡田昌彦