2013-06-10 1 views
0

Когда я запускаю этот скрипт в Powershell ISE:Неверный параметр при вызове Icacls с переменными

[System.Threading.Thread]::CurrentThread.CurrentCulture = 'en-us' 
$folder = Read-Host 'Dove sono le cartelle degli utenti?' 
$name = Read-Host 'Specificare la cartella dell utente?' 
takeown /f $folder\$name /r /d Y 
icacls $folder\$name /t /c /grant T135837TS:F /q 
icacls $folder\$name /grant ([String]($name.replace(".V2",""))):F /t /c /q 

Я получаю эту ошибку:

icacls : Invalid parameter "npac001" 
At line:1 char:1 
+ icacls $folder\$name /grant ([String]($name.replace(".V2",""))):F /t /c /q 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : NotSpecified: (Invalid parameter "npac001":String) [], RemoteException 
+ FullyQualifiedErrorId : NativeCommandError 

Где npac001 это пользователь, который должен иметь разрешения.

ответ

0

Ваша проблема в том, что icacls не видит пользователя и правило защиты доступа (:f) в качестве одного параметра.

Попробуйте положить одиночные кавычки вокруг следующей части:

icacls $folder\$name /grant '([String]($name.replace(".V2","")))':F /t /c /q 

ИЛИ

Попробуйте создать правила защиты доступа, прежде чем давать его icacls например:

$user = ([String]($name.replace(".V2",""))) 
$rule = "'$user':f" 
icacls "C:\folder" /grant $rule /t /c /q 

Примечание: Одиночные кавычки вокруг пользователя перед типом доступа g например, :f. Поэтому $rule должен выглядеть примерно так, прежде чем он будет передан icacls. "'npac001':f"