Set-Acl

Изменяет дескриптор безопасности указанного элемента, например файла или раздела реестра.

Синтаксис

Set-Acl
   [-Path] <String[]>
   [-AclObject] <Object>
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-Acl
   [-InputObject] <PSObject>
   [-AclObject] <Object>
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-Acl
   -LiteralPath <String[]>
   [-AclObject] <Object>
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Описание

Этот командлет доступен только на платформе Windows.

Командлет Set-Acl изменяет дескриптор безопасности указанного элемента, например файла или раздела реестра, чтобы соответствовать значениям в заданном дескрипторе безопасности.

Чтобы использовать Set-Acl, используйте параметр Path или InputObject , чтобы определить элемент, дескриптор безопасности которого требуется изменить. Затем используйте параметры AclObject или SecurityDescriptor для предоставления дескриптора безопасности, имеющего значения, которые необходимо применить. Set-Acl применяет дескриптор безопасности, предоставленный. Он использует значение параметра AclObject в качестве модели и изменяет значения дескриптора безопасности элемента для сопоставления значений в параметре AclObject.

Примеры

Пример 1. Копирование дескриптора безопасности из одного файла в другой

$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

Эти команды копируют значения из дескриптора безопасности файла Dog.txt в дескриптор безопасности файла Cat.txt. После выполнения команд дескрипторы безопасности файлов Dog.txt и Cat.txt становятся идентичны.

Первая команда использует Get-Acl командлет для получения дескриптора безопасности файла Dog.txt. Оператор назначения (=) сохраняет дескриптор безопасности в значении переменной $DogACL.

Вторая команда используется Set-Acl для изменения значений в ACL Cat.txt на значения в $DogACL.

Значение параметра Path — это путь к файлу Cat.txt. Значение параметра AclObject — это ACL модели, в данном случае ACL Dog.txt, как сохранено в переменной $DogACL .

Пример 2. Использование оператора конвейера для передачи дескриптора

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

Эта команда почти аналогична команде в предыдущем примере, за исключением того, что она использует оператор конвейера (|) для отправки дескриптора безопасности из Get-Acl команды Set-Acl в команду.

Первая команда использует Get-Acl командлет для получения дескриптора безопасности файла Dog.txt. Оператор конвейера передает| объект, представляющий дескриптор безопасности Dog.txt командлету Set-Acl .

Вторая команда используется Set-Acl для применения дескриптора безопасности Dog.txt к Cat.txt. После выполнения команды списки контроля доступа к файлам Dog.txt и Cat.txt становятся идентичны.

Пример 3. Применение дескриптора безопасности к нескольким файлам

$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

Эти команды применяют дескрипторы безопасности в файле File0.txt ко всем текстовым файлам в каталоге C:\Temp и всем его подкаталогам.

Первая команда получает дескриптор безопасности файла File0.txt в текущем каталоге и использует оператор назначения (=) для хранения его в переменной $NewACL .

Первая команда в конвейере использует командлет Get-ChildItem для получения всех текстовых файлов в каталоге C:\Temp . Параметр Recurse расширяет команду ко всем подкаталогам C:\temp. Параметр Include ограничивает файлы, полученные с расширением .txt имени файла. Параметр Force получает скрытые файлы, которые в противном случае будут исключены. (Невозможно использовать c:\temp\*.txtпараметр Recurse, так как параметр Recurse работает над каталогами, а не в файлах.)

Оператор конвейера (|) отправляет объекты, представляющие извлеченные файлы Set-Acl командлету, который применяет дескриптор безопасности в параметре AclObject ко всем файлам в конвейере.

На практике рекомендуется использовать параметр WhatIf со всеми Set-Acl командами, которые могут повлиять на несколько элементов. В этом случае второй командой в конвейере будет Set-Acl -AclObject $NewAcl -WhatIf. Она выводит на экран список файлов, к которым применяется команда. После просмотра результата можно снова запустить команду без параметра WhatIf .

Пример 4. Отключение наследования и сохранение унаследованных правил доступа

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
$isProtected = $true
$preserveInheritance = $true
$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Эти команды отключают наследование доступа из родительских папок, сохраняя существующие унаследованные правила доступа.

Первая команда использует Get-Acl командлет для получения дескриптора безопасности файла Dog.txt.

Затем переменные создаются для преобразования унаследованных правил доступа в явные правила доступа. Чтобы защитить правила доступа, связанные с этим, от наследования, задайте для переменной $isProtected значение $true. Чтобы разрешить наследование, задайте значение $isProtected$false. Дополнительные сведения см. в разделе "Настройка защиты правил доступа".

$preserveInheritance Задайте переменную, чтобы $true сохранить унаследованные правила доступа или $false удалить унаследованные правила доступа. Затем защита правила доступа обновляется с помощью метода SetAccessRuleProtection().

Последняя команда используется Set-Acl для применения дескриптора безопасности к Dog.txt. По завершении команды списки управления доступом Dog.txt, унаследованные из папки "Домашние животные", будут применяться непосредственно к Dog.txt, а новые политики доступа, добавленные к домашним животным, не изменят доступ к Dog.txt.

Пример 5. Предоставление полного управления Администратор istrators файла

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
# Set properties
$identity = "BUILTIN\Administrators"
$fileSystemRights = "FullControl"
$type = "Allow"
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Эта команда предоставит группе BUILDIN\Администратор istrators полный контроль над файлом Dog.txt.

Первая команда использует Get-Acl командлет для получения дескриптора безопасности файла Dog.txt.

Следующие переменные создаются для предоставления группе BUILDIN\Администратор istrator полный контроль над файлом Dog.txt. Переменная, заданная $identity для имени учетной записи пользователя. Переменная $fileSystemRights , заданная как FullControl, и может быть любым из значений FileSystemRights , указывающих тип операции, связанной с правилом доступа. Переменная, заданная $type как "Разрешить", указывает, следует ли разрешать или запрещать операцию. Переменная $fileSystemAccessRuleArgumentList — это список аргументов, который необходимо передать при создании нового объекта FileSystemAccessRule . Затем создается новый объект FileSystemAccessRule, а объект FileSystemAccessRule передается методу SetAccessRule(), добавляет новое правило доступа.

Последняя команда используется Set-Acl для применения дескриптора безопасности к Dog.txt. После завершения команды группа BUILDIN\Администратор istrator будет иметь полный контроль над Dog.txt.

Параметры

-AclObject

Указывает список управления доступом с необходимыми значениями свойств. Set-Acl изменяет ACL элемента, указанного параметром Path или InputObject , чтобы соответствовать значениям в указанном объекте безопасности.

Вы можете сохранить выходные данные Get-Acl команды в переменной, а затем использовать параметр AclObject для передачи переменной или введите Get-Acl команду.

Type:Object
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ClearCentralAccessPolicy

Удаляет централизованную политику доступа из указанного элемента.

Начиная с Windows Server 2012 администраторы могут использовать Active Directory и групповую политику для установки центральных политик доступа для пользователей и групп. Дополнительные сведения см. в разделе "Динамический контроль доступа: обзор сценария".

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Запрос подтверждения перед выполнением командлета.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Исключает указанные элементы. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использовать подстановочные знаки.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Задает фильтр в формате или на языке поставщика. Значение этого параметра определяет параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их при извлечении объектов, а не фильтрует объекты после их извлечения.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

Изменяет только указанные элементы. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использовать подстановочные знаки.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

Изменяет дескриптор безопасности указанного объекта. Введите переменную, содержащую объект, либо команду, которая его возвращают.

Невозможно передать объект, в который нужно изменить Set-Acl. Вместо этого используйте параметр InputObject явным образом в команде.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Изменяет дескриптор безопасности указанного элемента. В отличие от параметра Path, значение параметра LiteralPath используется в том виде, в котором оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки ('). Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Passthru

Возвращает объект, представляющий измененный дескриптор безопасности. По умолчанию этот командлет не создает выходные данные.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Изменяет дескриптор безопасности указанного элемента. Введите путь к элементу, например, путь к файлу или ключу реестра. Разрешено использовать подстановочные знаки.

При передаче объекта Set-Acl безопасности (с помощью параметров AclObject или SecurityDescriptor или передачи объекта безопасности из Get-Acl Set-Aclв ), а параметр Path (имя и значение) использует путь, Set-Acl включенный в объект безопасности.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

ObjectSecurity

Объект ACL можно передать в этот командлет.

CommonSecurityDescriptor

Вы можете передать дескриптор безопасности в этот командлет.

Выходные данные

None

По умолчанию этот командлет не возвращает выходные данные.

FileSecurity

При использовании параметра PassThru этот командлет возвращает объект безопасности. Тип объекта безопасности зависит от типа элемента.

Примечания

Этот командлет доступен только на платформах Windows.

Командлет Set-Acl поддерживается поставщиками файловой системы PowerShell и реестра. а значит его можно использовать для изменения дескрипторов безопасности файлов, каталогов и разделов реестра.