PowerShell - ошибка в пути при Set-FsrmQuota

Я пытаюсь сделать скрипт, который изменяет квоту определенного каталога на удаленном сервере. Для этого я использую следующий код ($Quota а также $chosen_username введите в качестве параметров):

$prefix_path = "C:\Shares\Users\";
$path = $prefix_path + $chosen_username;

if($Quota){
    invoke-command -computername $servername {Set-FsrmQuota -path $path -Size $Quota+"GB"}
}

if((invoke-command -computername $servername {Get-FsrmQuota -path $path} | select @{n='QuotaSize'; e={$_.Size / 1gb -as [int]}}).QuotaSize -eq $Quota){
    return "Success."
} else {
    return "Failed."
}

И это дает мне эту ошибку:

Cannot bind argument to parameter 'Path' because it is an empty string.
       + CategoryInfo          : InvalidData: (:) [Set-FsrmQuota], ParameterBindingValidationException
       + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Set-FsrmQuota
       + PSComputerName        : ServerName

Я сделал отладку и значение $path верно.

1 ответ

Решение

Когда используешь invoke-command на удаленном компьютере локальные переменные неизвестны для удаленного хоста, поэтому вы должны использовать либо:

  • префикс использования для PS >= 3

    invoke-command -computername $servername {Set-FsrmQuota -path $using:path -Size $using:Quota+"GB"}
    
  • Параметр списка аргументов для PS < 3

    invoke-command -computername $servername {Set-FsrmQuota -path $args[0] -Size $args[1]+"GB"} -argumentlist $path,$quota
    
Другие вопросы по тегам