2016-10-26 22 views
0

あるので、私は、このPowerShellスクリプトを使用してリモートサービスを停止しようとしている:PowerShellは - 「名前を」パラメータの引数をバインドすることはできません、それはヌル

$hostname1 = "myhost" 
$serviceName = "myservice" 
Write-Host "Hostname: $hostname1" 
Write-Host "Service name: $serviceName" 
Invoke-Command -ComputerName $hostname1 -ScriptBlock { 
    Stop-Service -Name $serviceName -Force 
} 

しかし、このエラーメッセージの取得:

Cannot bind argument to parameter 'Name' because it is null. 
    + CategoryInfo   : InvalidData: (:) [Stop-Service], ParameterBindin 
    gValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,M icrosoft.PowerShell.Commands.StopServiceCommand 

私はスクリプトからInvoke-Commandを削除した場合、私は変数が正しく初期化されて見ることができます:

$hostname1 = "myhost" 
$serviceName = "myservice" 
Write-Host "Hostname: $hostname1" 
Write-Host "Service name: $serviceName" 

返品:

Hostname: myhost 
Service name: myservice 

どういう理由が考えられますか?

おかげで、 ローマ

+1

可能な複製を使用する必要が?](http://stackoverflow.com/questions/36328690/how-do-i-pass-variables-with-the-invoke-command-cmdlet) – PetSerAl

+0

http://stackoverflow.com/questions/36339616/とhttp ://stackoverflow.com/questions/13036327/およびhttp://stackoverflow.com/questions/37858282/ – TessellatingHeckler

+0

ありがとうございました!私は自分の答えを見つけました。 – Roman

答えて

1

さらに掘削を少しと私は自分自身に答えるた - [どのように私は、Invoke-Commandコマンドレットと変数を渡すかの-argumentlist

$hostname1 = "myhost" 
$serviceName = "myservice" 
Write-Host "Hostname: $hostname1" 
Write-Host "Service name: $serviceName" 
Invoke-Command -ComputerName $hostname1 -ScriptBlock { 
    Stop-Service -Name $args[0] -Force 
} -argumentlist $serviceName 
関連する問題