Win32_LogicalFileSecuritySetting возвращает ошибку для некоторых путей, но не для других

Я получил сценарий от Microsoft, который использует следующий метод для получения настроек безопасности NTFS с удаленного компьютера.

$SharedFolderPath=[regex]::Escape("D:\UserSetup");
$SharedNTFSSecs = Get-WmiObject -Class Win32_LogicalFileSecuritySetting -Filter "Path='$SharedFolderPath'" -ComputerName $Computer

$SharedFolderPath=[regex]::Escape("C:\Program Files\AdventNet\ME\OpManager\Reports");
$SharedNTFSSecs = Get-WmiObject -Class Win32_LogicalFileSecuritySetting -Filter "Path='$SharedFolderPath'" -ComputerName $Computer

Я получил пути от предыдущего вызова Win32_Share. Первый работает нормально, второй выдает ошибку:

> Get-WmiObject : Invalid query  At line:1 char:118
> + $SharedFolderPath=[regex]::Escape("C:\Program Files\AdventNet\ME\OpManager\Reports"); $SharedNTFSSecs =
> Get-WmiObject <<<<   -Class Win32_LogicalFileSecuritySetting -Filter
> "Path='$SharedFolderPath'" -ComputerName $Computer
>     + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
>     + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Отличается только путь:

D:\UserSetup
C:\Program Files\AdventNet\ME\OpManager\Reports

Я могу подключиться к общему ресурсу и просмотреть разрешения безопасности. Я фактически вхожу в группу локальных администраторов, и эта группа имеет полный контроль над проблемным ресурсом.

Кто-нибудь знает, почему я получаю сообщение об ошибке (и, следовательно, нет результирующего объекта)?


person Roman    schedule 03.10.2013    source источник
comment
Пожалуйста, отформатируйте свой вопрос и покажите нам соответствующий код.   -  person Cristian Ciupitu    schedule 03.10.2013


Ответы (1)


Я считаю, что это потому, что:

[regex]::Escape("C:\Program Files\AdventNet\ME\OpManager\Reports")

дает

C:\\Program\ Files\\AdventNet\\ME\\OpManager\\Reports

Пробел также экранирован, попробуйте:

Get-WmiObject -Class Win32_LogicalFileSecuritySetting -Filter "Path='C:\\Program Files\\AdventNet\\ME\\OpManager\\Reports'" -ComputerName $Computer
person JPBlanc    schedule 03.10.2013
comment
Я должен был заподозрить этот код. Спасибо. Я исправил это с помощью $SharedFolderPath = $Share.Path -replace '\\','\\' - person Roman; 04.10.2013