@Nizitka

Как работает присваивание в powershell?

Почему при выполнении:
$crdir="C:\temp"
$acl = Get-Acl $crdir
$newacl=$acl
$newacl.SetAccessRuleProtection($True, $false)
$acl |ft -Wrap
$newacl |ft -Wrap

вывод переменных $acl и $newacl одинаковый?
действие производится же только с $newacl, или я чего-то не понимаю.
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
@Nizitka Автор вопроса
Ответили в другом месте.
Для интересующихся - это ссылочный тип данных.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BeatHazard
Метод .SetAccessRuleProtection производит два действия, первое - блокирует наследование разрешений от родителя/включает наследование для объекта, второе - оставляет унаследованные разрешения в виде явно заданных разрешений/удаляет унаследованные разрешения и оставляет только те, которые были явно заданы.
Таким образом вероятнее всего у вас просто отсутствуют какие-либо унаследованные разрешения для папки "C:\temp" Если вы например создадите подпапку в "C:\temp", выдадите папке "C:\temp" разрешения и включите наследование, то после выполнения $newacl.SetAccessRuleProtection($True, $false) применительно к папке внутри "C:\temp" вывод между $acl и $newacl будет отличаться, т.к. будет удалено наследование разрешений.
Подробнее можно почитать тут https://windowsnotes.ru/powershell-2/upravlenie-ac...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы