使用腳本部署應用程控原則

注意

商務用應用程控的某些功能僅適用於特定的 Windows 版本。 深入了解 應用程控功能可用性

本文說明如何使用腳本部署商務用應用程控原則。 下列指示使用PowerShell,但可以使用任何腳本主機。

您現在應該已將一或多個應用程控原則轉換成二進位形式。 如果沒有,請遵循 部署商務用應用程控原則中所述的步驟。

重要

由於已知問題,您應該一律啟用新的 已簽署 應用程控基底原則,並在已啟用 記憶體完整性的 系統上重新啟動。 略過下列所有使用 CiTool、RefreshPolicy.exe 或 WMI 來起始原則啟用的步驟。 相反地,請將原則二進位檔複製到正確的 system32 和 EFI 位置,然後在系統重新啟動時啟動原則。

此問題不會影響系統上已啟用之已簽署基底原則的更新、未簽署原則的部署,或 (已簽署或未簽署) 的補充原則部署。 它也不會影響未執行記憶體完整性的系統部署。

部署 Windows 11 22H2 和更新版本的原則

您可以使用收件匣 CiTool,透過下列命令在 Windows 11 22H2 上套用原則。 請務必將下列範例中要部署>的原則二進位檔路徑取代<為應用程式控制原則二進位檔的實際路徑。

# 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 和更新版本的原則

若要使用此程式,請下載 應用程控原則重新整理工具 併發佈至所有受控端點。 請確定您的應用程控原則允許應用程控原則重新整理工具,或使用受管理的安裝程式來散發工具。

  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. 將商務用應用程控原則二進位檔複製到目的地資料夾。

    Copy-Item -Path $PolicyBinary -Destination $DestinationFolder -Force
    
  3. 視需要重複步驟 1-2,以部署更多應用程控原則。

  4. 執行 RefreshPolicy.exe,以啟用和重新整理 Managed 端點上的所有應用程控原則。

    & $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. 將商務用應用程控原則二進位檔複製到目的地。

    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. 重新啟動系統。