У меня есть каталог, имя которого содержит квадратные скобки, что делает обработку в Powershell немного проблематичной.Я видел совет, чтобы получить ACL каталога, вы должны использовать GetAccessControl()
метод DirectoryInfo
вместо использования командлета Get-Acl
.
К сожалению, использование GetAccessControl()
не возвращаетлюбые результаты для любого каталога.См. Мой скрипт ниже.
$filename = "C:\somefolder"
$di = get-item $filename
$di | get-acl # this returns the correct ACL data as expected
$di.GetAccessControl() # this shows an empty ACL (see below output)
Что я имею в виду под пустым списком ACL, это:
Path Owner Access
---- ----- ------
Единственный найденный мной способ получить экземпляр $ di с каталогомимя, которое содержит квадратные скобки, должно выходить за скобки с двойными обратными галочками
$filename = "C:\some``[folder``]withsquarebrackets"
Если я сделаю это, а затем выполню $di = get-item $filename
, $di
покажет, что он содержит сведения об указанной папке.Но в этом случае разные результаты возвращаются оставшимися двумя строками:
$di | get-acl # does nothing, doesn't even show an empty ACL
$di.GetAccessControl() # shows an empty ACL as seen above
Может кто-нибудь объяснить, как я могу надежно получить ACL для перечисления папок, некоторые из которых содержат квадратные скобки в своих именах?
Обновление 2012-02-23 16: 31Z После того, как Энди Арисменди сообщил, что это работает для него, я установил, что GetAccessControl (), кажется, работает нормально на Powershell 2. Уязвимая машина работает Powershell 1Любые идеи, как решить эту проблему с помощью Powershell 1?