今回は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」というグループが存在していない状態が正しい状態である、ということが定義できました。
これで構成項目ができました。
次に、この構成項目を使って、構成基準を作成し、展開していく必要があります。
このやり方ではPowerShellを利用しているので、PowerShellの実行を許可するようにコンピューターのポリシーを予め構成しておく必要があります。
割り当てられた構成は、クライアント側でも確認ができます。
検証中で評価を早く行いたい場合には「コンピューターポリシーの取得および評価サイクル」を実行すると良いです。
上記は新しい構成が設定され、まだ評価されていない状況です。「評価」を押すことで手動で評価を行うことも出来ます。
評価を実行すると「対応」状態となりました。
具体的な管理対象のリストはサーバー上のレポートで確認出来ます。
ちょっとスクリプトが書けてしまえば、「特定の状態にある」ことを確認することが非常に簡単にできることがわかってもらえましたでしょうか。
コメントを残す