Invoke-Command не извлекает мои переменные?
Я поймал на этом. Я мог бы использовать xtra набор глаз!
Я извлекаю службы с удаленной машины и назначаю их по номеру, а затем передаю остановку / запуск удаленной машине на основе ввода пользователя. Я получаю аргумент по моей переменной.
Прошу прощения за настройку кода. Я новенький, и я пишу, а потом убираю. Некоторые службы и названия были удалены из соображений конфиденциальности.
Код::
$prepend = "ssssssssss"
$append = "sss"
$Fprepend = "tttttttt"
$Fappend = "tt"
$sitenumber = Read-Host 'What is the site number? ex. 1111'
$name = $prepend + $sitenumber + $append
$Fname = $Fname = $Fprepend + $sitenumber + $Fappend
$global:i=0
Get-service -Name Service,Instance,Server,Integration,Data,Message,FTP,Provider -ComputerName $name |
Select @{Name="Item";Expression={$global:i++;$global:i}},Name -OutVariable menu | Format-Table -AutoSize
$r = Read-Host "Select a service to restart by number"
$svc = $menu | where {$_.item -eq $r}
Write-Host "Restarting $($svc.name)" -ForegroundColor Green
Invoke-Command -ComputerName $Fname -ScriptBlock {Stop-Service -Name $svc.name -Force}
sleep 3
Invoke-Command -ComputerName $Fname -ScriptBlock {Start-Service -Name $svc.name -Force}
Get-service -Name $svc.name -Computername $name
Ошибка::
Невозможно привязать аргумент к параметру «Имя», поскольку он имеет значение NULL. + CategoryInfo: InvalidData: (:) [Stop-Service], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorNullNotAllowed, Microsoft.PowerShell.Commands.StopServiceCommand
Невозможно привязать аргумент к параметру «Имя», поскольку он имеет значение NULL. + CategoryInfo: InvalidData: (:) [Start-Service], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorNullNotAllowed, Microsoft.PowerShell.Commands.StartServiceCommand
Invoke-Command
не удаляет переменные (динамический характер сценариев означает, что было бы очень сложно понять, какие из них следует удаленно), поэтому на удаленном конце отсутствует переменная$svc
, когда передается блок сценария. Начиная с версии 3.0, вы можете исправить это с помощью$using
. См.about_Remote_Variables
. - person Jeroen Mostert   schedule 12.12.2016