スクリプトを使用してアプリ制御ポリシーをデプロイする

App Control for Business の一部の機能は、特定の Windows バージョンでのみ使用できます。 アプリ制御機能の可用性について詳しくは、こちらをご覧ください。

この記事では、スクリプトを使用して App Control for Business ポリシーを展開する方法について説明します。 次の手順では PowerShell を使用しますが、任意のスクリプト ホストで動作できます。

これで、1 つ以上のアプリ制御ポリシーがバイナリ形式に変換されます。 そうでない場合は、「 App Control for Business ポリシーの展開」で説明されている手順に従います。

重要

既知の問題のため、メモリ整合性が有効になっているシステムで再起動を行い、新しい署名されたアプリコントロールベースポリシーを常にアクティブにする必要があります。 CiTool、RefreshPolicy.exe、または WMI を使用してポリシーのアクティブ化を開始する以下のすべての手順をスキップします。 代わりに、ポリシー バイナリを正しい system32 と EFI の場所にコピーし、システム再起動でポリシーをアクティブ化します。

この問題は、システムで既にアクティブになっている署名済みの基本ポリシー、署名されていないポリシーの展開、または補足ポリシーの展開 (署名済みまたは署名なし) の更新には影響しません。 また、メモリ整合性を実行していないシステムへのデプロイにも影響しません。

Windows 11 22H2 以降のポリシーの展開

受信トレイ CiTool を使用して、次のコマンドを使用して、Windows 11 22H2 にポリシーを適用できます。 デプロイするポリシー バイナリ ファイルに<Path を置き換えてください>次の例では、アプリコントロール ポリシー バイナリ ファイルへの実際のパスに置き換えてください。

# Policy binary files should be named as {GUID}.cip for multiple policy format files (where {GUID} = <PolicyId> from the Policy XML)
$PolicyBinary = "<Path to policy binary file to deploy>"
CiTool --update-policy $PolicyBinary [-json]

Windows 11、Windows 10 バージョン 1903 以降、および Windows Server 2022 以降のポリシーの展開

この手順を使用するには、 App Control ポリシー更新ツール をダウンロードして、すべてのマネージド エンドポイントに配布します。 アプリ制御ポリシーでアプリ制御ポリシー更新ツールが許可されていることを確認するか、マネージド インストーラーを使用してツールを配布します。

  1. スクリプトで使用する変数を初期化します。

    # Policy binary files should be named as {GUID}.cip for multiple policy format files (where {GUID} = <PolicyId> from the Policy XML)
    $PolicyBinary = "<Path to policy binary file to deploy>"
    $DestinationFolder = $env:windir+"\System32\CodeIntegrity\CIPolicies\Active\"
    $RefreshPolicyTool = "<Path where RefreshPolicy.exe can be found from managed endpoints>"
    
  2. App Control for Business ポリシー バイナリをコピー先フォルダーにコピーします。

    Copy-Item -Path $PolicyBinary -Destination $DestinationFolder -Force
    
  3. 必要に応じて手順 1 ~ 2 を繰り返して、より多くのアプリ制御ポリシーをデプロイします。

  4. RefreshPolicy.exe を実行して、マネージド エンドポイント上のすべてのアプリ制御ポリシーをアクティブ化して更新します。

    & $RefreshPolicyTool
    

他のすべてのバージョンの Windows および Windows Server のポリシーの展開

WMI を使用して、他のすべてのバージョンの Windows と Windows Server にポリシーを適用します。

  1. スクリプトで使用する変数を初期化します。

    # Policy binary files should be named as SiPolicy.p7b for Windows 10 versions earlier than 1903
    $PolicyBinary = "<Path to policy binary file to deploy>"
    $DestinationBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
    
  2. App Control for Business ポリシー バイナリをコピー先にコピーします。

    Copy-Item  -Path $PolicyBinary -Destination $DestinationBinary -Force
    
  3. WMI を使用してアプリ制御ポリシーを更新してアクティブ化する

    Invoke-CimMethod -Namespace root\Microsoft\Windows\CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{FilePath = $DestinationBinary}
    

署名済みポリシーの展開

署名されたアプリ制御ポリシーを使用している場合は、前のセクションで説明した場所に加えて、ポリシーをデバイスの EFI パーティションに展開する必要があります。 署名されていないアプリ制御ポリシーは、EFI パーティションに存在する必要はありません。

  1. EFI ボリュームをマウントし、ディレクトリが存在しない場合は、管理者特権の PowerShell プロンプトで作成します。

    $MountPoint = 'C:\EFIMount'
    $EFIDestinationFolder = "$MountPoint\EFI\Microsoft\Boot\CiPolicies\Active"
    $EFIPartition = (Get-Partition | Where-Object IsSystem).AccessPaths[0]
    if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force }
    mountvol $MountPoint $EFIPartition
    if (-Not (Test-Path $EFIDestinationFolder)) { New-Item -Path $EFIDestinationFolder -Type Directory -Force }
    
  2. 署名済みポリシーを作成したフォルダーにコピーします。

    Copy-Item -Path $PolicyBinary -Destination $EFIDestinationFolder -Force
    
  3. システムを再起動します。