Развертывание политик WDAC с помощью скрипта

Примечание.

Некоторые возможности управления приложениями Защитник Windows (WDAC) доступны только в определенных версиях Windows. Дополнительные сведения о доступности функций управления приложениями.

В этой статье описывается развертывание Защитник Windows политик управления приложениями (WDAC) с помощью скрипта. В следующих инструкциях используется PowerShell, но он может работать с любым узлом сценариев.

Теперь у вас должна быть одна или несколько политик WDAC, преобразованных в двоичную форму. Если нет, выполните действия, описанные в разделе Развертывание политик управления приложениями Защитник Windows (WDAC).

Важно.

Из-за известной проблемы следует всегда активировать новые подписанные базовые политики WDAC с перезагрузкой в системах с включенной целостностью памяти . Пропустите все приведенные ниже шаги, использующие CiTool, RefreshPolicy.exe или WMI для активации политики. Вместо этого скопируйте двоичный файл политики в правильные расположения system32 и EFI, а затем активируйте политику с перезапуском системы.

Эта проблема не влияет на обновления подписанных базовых политик, которые уже активны в системе, развертывание неподписанных политик или развертывание дополнительных политик (подписанных или неподписанных). Это также не влияет на развертывания в системах, в которых не выполняется целостность памяти.

Развертывание политик для Windows 11 22H2 и более поздних версий

CiTool для папки "Входящие" можно использовать для применения политик к Windows 11 22H2 с помощью следующих команд. Обязательно замените <путь к двоичному файлу политики для развертывания> в следующем примере фактическим путем к двоичному файлу политики WDAC.

# 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 и более поздних версий

Чтобы использовать эту процедуру, скачайте и раздайте средство обновления политики WDAC всем управляемым конечным точкам. Убедитесь, что политики WDAC разрешают обновление политики WDAC или используйте управляемый установщик для распространения этого средства.

  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. Скопируйте двоичный файл политики управления приложениями (WDAC) Защитник Windows в папку назначения.

    Copy-Item -Path $PolicyBinary -Destination $DestinationFolder -Force
    
  3. Повторите шаги 1–2, чтобы развернуть дополнительные политики WDAC.

  4. Запустите RefreshPolicy.exe, чтобы активировать и обновить все политики WDAC в управляемой конечной точке.

    & $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. Скопируйте двоичный файл политики Защитник Windows управления приложениями (WDAC) в место назначения.

    Copy-Item  -Path $PolicyBinary -Destination $DestinationBinary -Force
    
  3. Обновление и активация политики WDAC с помощью WMI

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

Развертывание подписанных политик

Если вы используете подписанные политики WDAC, политики должны быть развернуты в разделе EFI устройства в дополнение к расположениям, описанным в предыдущих разделах. Неподписанные политики WDAC не обязательно должны присутствовать в разделе 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. Перезапустите систему.