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. Оператор конвейера (|
) передает в командлет объект , представляющий дескриптор Set-Acl
безопасности Dog.txt.
Вторая команда использует 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. После выполнения команды списки ACL 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
$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
Эта команда предоставит группе BUILTIN\Administrators полный доступ к файлу Dog.txt.
Первая команда использует Get-Acl
командлет для получения дескриптора безопасности файла Dog.txt.
Далее создаются переменные, чтобы предоставить группе BUILTIN\Administrators полный доступ к файлу Dog.txt. Переменная $identity
, заданная для имени учетной записи пользователя. Переменная $fileSystemRights
, задающая значение FullControl, может быть любым из значений FileSystemRights , указывающих тип операции, связанной с правилом доступа. Переменная, заданная $type
в значение "Разрешить", указывает, следует ли разрешать или запрещать операцию. Переменная $fileSystemAccessRuleArgumentList
представляет собой список аргументов, который необходимо передать при создании нового объекта FileSystemAccessRule . Затем создается новый объект FileSystemAccessRule , а объект FileSystemAccessRule передается в метод SetAccessRule() и добавляет новое правило доступа.
Последняя команда использует Set-Acl
для применения дескриптора безопасности к Dog.txt. После выполнения команды группа BUILTIN\Administrators будет иметь полный контроль над 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 и групповая политика для настройки централизованных политик доступа для пользователей и групп. Дополнительные сведения см. в разделе Dynamic контроль доступа: Scenario Overview.
Этот параметр впервые появился в 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. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их при извлечении объектов вместо того, чтобы powerShell фильтровать объекты после их извлечения.
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 |
Входные данные
Вы можете передать объект ACL в этот командлет.
Вы можете передать дескриптор безопасности в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает объект безопасности. Тип объекта безопасности зависит от типа элемента.
Примечания
Этот командлет доступен только на платформах Windows.
Командлет Set-Acl
поддерживается файловой системой PowerShell и поставщиками реестра. а значит его можно использовать для изменения дескрипторов безопасности файлов, каталогов и разделов реестра.