Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Powershell - Cannot bind argument to parameter 'Name' because it is null

Tags:

powershell

I'm trying to stop a remote service using this Powershell script:

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

But getting this error message:

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

If I remove Invoke-Command from the script, I can see the variables are initialized correctly:

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

Returns:

Hostname: myhost
Service name: myservice

What can be a reason for this?

Thanks, Roman

like image 289
Roman Avatar asked Mar 10 '26 02:03

Roman


1 Answers

A little bit of further digging and I found the answer myself - need to use -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
like image 193
Roman Avatar answered Mar 12 '26 19:03

Roman