Invoke-Command не вытягивает мои переменные?Invoke-Command не может связывать аргумент ошибки
Im пойман на этом. Я мог бы использовать xtra множество глаз!
Im вытягивает услуги с удаленной машины и назначает их по номеру, а затем передает остановку/запуск на удаленный компьютер, основанный на пользовательском вводе. Я получаю аргумент в моей переменной.
Прошу прощения за установку кода Im new, и я пишу, затем чищу. Некоторые службы и имена удалены для обеспечения конфиденциальности.
Код ::
$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
Error ::
Невозможно привязать аргумент параметра 'Имя', поскольку он является недействительным. + CategoryInfo: InvalidData: (:) [Stop-Service], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorNullNotAllowed, Microsoft.PowerShell.Commands.StopServiceCommand
Невозможно привязать аргумент параметра 'Имя', поскольку он является недействительным. + CategoryInfo: InvalidData: (:) [Start-Service], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorNullNotAllowed, Microsoft.PowerShell.Commands.StartServiceCommand
Нет, 'Invoke-Command' не использует удаленные переменные (динамическая природа скриптов означает, что было бы очень сложно узнать, какие из них удалены вообще), поэтому на удаленном конце нет переменной' $ svc', когда scriptblock передается. Начиная с версии 3.0, вы можете исправить это с помощью '$ using'. См. ['About_Remote_Variables'] (https://msdn.microsoft.com/powershell/reference/5.1/Microsoft.PowerShell.Core/about/about_Remote_Variables). –
Спасибо Jeroen, я передал -ArgumentList $ Service в конце Invoke для вызова моей переменной. Я также хотел захватить $ svc.name в отдельную переменную для последующего использования. Теперь это похоже на каждую строку $ svc = $ menu | где {$ _item -eq $ r} $ Service = $ svc.name Invoke-Command -ComputerName $ Fname -ScriptBlock {Start-Service -Name $ args [0]} -ArgumentList $ Service – DotSlashCrash