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

Синтаксис

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.






См. также




Содержание