Я пытаюсь вызвать функциональный блок, который не требует дополнительных аргументов в командлете Invoke-Command.
$hostList = (Read-Host "Enter IP addresses/hostnames of hosts you want to connect to (Comma seperated)").Split(',');
foreach($_ in $hostList){
Invoke-Command -ComputerName $_ -Credential Administrator -ScriptBlock{$Function:PCInfo}
}
Мой функциональный блок выглядит примерно так (в целях тестирования):
Function PCInfo{
$winVersion = gwmi -class Win32_OperatingSystem | select Caption,Version,CSName,OSArchitecture
$processorInfo = gwmi -class Win32_Processor | select Name,Manufacturer,MaxClockSpeed
$diskInfo = gwmi -class Win32_LogicalDisk | select @{Label=’Drive Letter’;Expression={$_.DeviceId}}, @{Label=’Size (GB)’;Expression={"{0:N2}" -f ($_.Size/1GB)}}, @{Label=’Free Space (GB)’;Expression={"{0:N2}" -f($_.freespace/1GB)}}
$routingTable = gwmi win32_IP4RouteTable | select Destination,Mask,@{Label=’Next Hop’;Expression={$_.NextHop}} -uniq | format-table
$timeObject = gwmi -class Win32_OperatingSystem
}
У меня возникают две проблемы при использовании этого кода:
Это не приводит ни к какому результату. Я искал SO и нашел похожие вопросы, но я могу найти только похожие сценарии, в которых функция использует дополнительные аргументы. Поскольку это автономный тип функции, я не могу понять, почему она не работает.
При запуске этого скрипта от имени обычного пользователя появляется всплывающее окно с учетными данными. Я заполняю учетные данные администратора, но получаю следующую ошибку:
[127.0.0.1] Не удалось подключиться к удаленному серверу 127.0.0.1 со следующим сообщением об ошибке: Отказано в доступе.*
Интересно, почему это происходит, если я заполняю (локальные) учетные данные администратора?