Set-Acl
Изменяет дескриптор безопасности указанного элемента, например файл или раздел реестра.
Синтаксис
ByPath (по умолчанию)
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByInputObject
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Set-Acl
[-AclObject] <Object>
-LiteralPath <String[]>
[-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.
Значение параметра пути 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 работает над каталогами, а не в файлах.)
Оператор конвейера (|) отправляет объекты, представляющие извлеченные файлы командлету 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. Предоставление администраторам полного контроля над файлом
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
# Set properties
$identity = "BUILTIN\Administrators"
$fileSystemRights = "FullControl"
$type = "Allow"
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$newParams = @{
TypeName = 'System.Security.AccessControl.FileSystemAccessRule'
ArgumentList = $fileSystemAccessRuleArgumentList
}
$fileSystemAccessRule = New-Object @newParams
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
Эта команда предоставит группе BUILTIN\Administrators полный доступ к файлу Dog.txt.
Первая команда использует командлет Get-Acl для получения дескриптора безопасности файла Dog.txt.
Следующие переменные создаются, чтобы предоставить группе BUILTIN\Администраторы полный контроль над файлом Dog.txt. Переменная $identity установлена на имя учетной записи пользователя . Переменная $fileSystemRights, заданная как FullControl, и может быть любой из значений FileSystemRights, указывающих тип операции, связанной с правилом доступа. Переменная $type, значение которой установлено на "Разрешить", указывает, следует ли разрешать или запрещать операцию. Переменная $fileSystemAccessRuleArgumentList — это список аргументов, который необходимо передать при создании нового объекта FileSystemAccessRule. Затем создается новый объект FileSystemAccessRule, а объект FileSystemAccessRule передается в метод SetAccessRule(), добавляет новое правило доступа.
Последняя команда использует Set-Acl для применения дескриптора безопасности к Dog.txt. После выполнения команды группа BUILTIN\Administrators будет иметь полный контроль над Dog.txt.
Параметры
-AclObject
Задает ACL с требуемыми значениями свойств.
Set-Acl изменяет ACL элемента, указанного параметром Path или InputObject, чтобы соответствовать значениям в указанном объекте безопасности.
Выходные данные команды Get-Acl можно сохранить в переменной, а затем использовать параметр AclObject для передачи переменной или введите команду Get-Acl.
Свойства параметра
| Тип: | Object |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | 1 |
| Обязательно: | True |
| Значение из конвейера: | True |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-ClearCentralAccessPolicy
Удаляет центральную политику доступа из указанного элемента.
Начиная с Windows Server 2012 администраторы могут использовать Active Directory и групповую политику для установки центральных политик доступа для пользователей и групп. Дополнительные сведения см. в разделе Динамическое управление доступом: обзор сценария.
Этот параметр появился в Windows PowerShell 3.0.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | PSPath, LP |
Наборы параметров
ByPath
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
ByLiteralPath
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Confirm
Запрашивает подтверждение перед запуском cmdlet.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | cf |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Exclude
Исключает указанные элементы. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например *.txt. Подстановочные символы разрешены.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Filter
Задает фильтр в формате или языке поставщика. Значение этого параметра квалифифициирует параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, потому что поставщик применяет их при извлечении объектов, а PowerShell фильтрует объекты после их извлечения.
Свойства параметра
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Include
Изменяет только указанные элементы. Значение этого параметра квалифифициирует параметр Path.
Введите элемент пути или шаблон, например *.txt. Подстановочные символы разрешены.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-InputObject
Изменяет дескриптор безопасности указанного объекта. Введите переменную, содержащую объект или команду, которая получает объект.
Вы не можете перенаправить объект, который необходимо изменить, в Set-Acl. Вместо этого используйте параметр InputObject явным образом в команде.
Этот параметр появился в Windows PowerShell 3.0.
Свойства параметра
| Тип: | PSObject |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
ByInputObject
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-LiteralPath
Изменяет дескриптор безопасности указанного элемента. В отличие от пути , значение параметра LiteralPath используется в точности так, как введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки (').
Одинарные кавычки указывают PowerShell на то, что не следует интерпретировать какие-либо символы как управляющие последовательности.
Этот параметр появился в Windows PowerShell 3.0.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | PSPath |
Наборы параметров
ByLiteralPath
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-PassThru
Возвращает объект, представляющий дескриптор безопасности, который был изменен. По умолчанию этот командлет не создает выходные данные.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Path
Изменяет дескриптор безопасности указанного элемента. Введите путь к элементу, например, к файлу или к ключу реестра. Подстановочные символы разрешены.
При передаче объекта безопасности в Set-Acl (путем использования параметров AclObject или SecurityDescriptor либо путем передачи объекта безопасности из Get-Acl в Set-Acl), если параметр Path (имя и значение) опущен, то Set-Acl использует путь, содержащийся в объекте безопасности.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
ByPath
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не запускается.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | wi |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
ObjectSecurity
Объект ACL можно передать в этот командлет.
CommonSecurityDescriptor
Вы можете передать дескриптор безопасности в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
FileSecurity
При использовании параметра PassThru этот командлет возвращает объект безопасности. Тип объекта безопасности зависит от типа элемента.
Примечания
Этот командлет доступен только на платформах Windows.
Командлет Set-Acl поддерживается поставщиками файловой системы и реестра PowerShell. Таким образом, его можно использовать для изменения дескрипторов безопасности файлов, каталогов и разделов реестра.