Изменяет дескриптор безопасности указанного ресурса, например файла или раздела реестра.
Синтаксис
Set-Acl [-Path] <string[]> [-AclObject] <ObjectSecurity> [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
Описание
Командлет Set-Acl изменяет дескриптор безопасности указанного ресурса, такого как файл или раздел реестра, в соответствии со значением предоставленного дескриптором безопасности.
Чтобы использовать командлет Set-Acl, воспользуйтесь параметром Path для определения ресурса, дескриптор безопасности которого нужно изменить, и используйте параметр AclObject, чтобы предоставить дескриптор безопасности со значениями, которые нужно применить. Командлет Set-Acl использует значение параметра как образец и изменяет значения в дескрипторе безопасности ресурса в соответствии со значениями в параметре AclObject.
Параметры
-AclObject <ObjectSecurity>
Задает список управления доступом с заданными значениями свойств. Командлет Set-Acl изменяет список управления доступом ресурса, заданного параметром Path, в соответствии со значениями в указанном объекте безопасности.
Вывод командлета Get-Acl можно сохранить в переменной, а затем использовать параметр AclObject, чтобы передать переменную, или ввести команду Get-Acl.
Обязательно? |
true |
Позиция? |
2 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-Exclude <string[]>
Исключает указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например "*.txt". Подстановочные знаки разрешены.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Filter <string>
Задает фильтр с использованием формата или языка поставщика. Значение этого параметра определяет значение параметра Path. Синтаксис фильтра, в том числе использование подстановочных знаков, зависит от поставщика. Фильтры эффективнее других параметров, потому что поставщик применяет их при извлечении объектов (вместо использования Windows PowerShell для фильтрации извлеченных объектов).
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Include <string[]>
Изменяет только указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например "*.txt". Подстановочные знаки разрешены.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-PassThru
Возвращает объект, представляющий дескриптор безопасности. По умолчанию этот командлет не формирует никаких выходных данных.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Path <string[]>
Определяет ресурс, дескриптор безопасности которого требуется изменить. Введите путь к ресурсу, например путь к файлу или разделу реестра. Подстановочные знаки разрешены.
Если объект безопасности передается командлету Set-Acl (с помощью параметра AclObject или путем передачи объекта из Get-Acl и Set-Acl) и параметр Path пропущен (имя и значение), то командлет Set-Acl использует путь, включенный в объект безопасности.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByPropertyName) |
Принимать подстановочные знаки? |
false |
-Confirm
Запрашивает подтверждение перед выполнением команды.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-WhatIf
Описывает, что произойдет при выполнении команды, без ее фактического выполнения.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр допустим, только если транзакция выполняется. Дополнительные сведения см. в разделе about_Transactions.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.Security.AccessControl.ObjectSecurity Дескриптор безопасности можно передать командлету Set-Acl по конвейеру. |
Выходные данные |
Отсутствует или объект безопасности По умолчанию командлет Set-Acl не формирует никаких выходных данных. Однако если использовать параметр "-Passthru", он создает объект безопасности. Тип объекта безопасности зависит от типа ресурса. |
Примечания
Командлет Set-Acl поддерживается поставщиками файловой системы и реестра Windows PowerShell. Поэтому ее можно использовать для изменения дескрипторов безопасности файлов, каталогов и разделов реестра.
При указании нескольких значений параметра разделяйте их запятыми. Например: "<имя-параметра> <значение1>, <значение2>".
Пример 1
C:\PS>$DogACL = get-acl c:\dog.txt C:\PS>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
C:\PS>get-acl 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. После завершения работы команды списки ACL файлов Dog.txt и Cat.txt идентичны.
Пример 3
C:\PS>$newACL = get-acl file0.txt C:\PS>get-childitem 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.