Powershell: How to pass a parameter to a scriptblock
Scriptblock. Very common in the powershell world and used by many cmdlets and functions like Invoke-Command. But how can we pass a parameter to the scriptblock?
Lets say that we are developing a function that will execute a command on remote computers. As a real world example, I want to check the status of a service on remote computers. I need however my function to be agile and accept the name of the service to check.
Since I am going to be using the Invoke-Command cmdlet, I need to pass the name of the service to the scriptblock parameter. Fortunatelly, this is fairly easy and cam be accomplished using the param statement in the scriptblock just like:
Of course, the Get-Service has a ComputerName parameter for this purpose but this is just an example.
Lets say that we are developing a function that will execute a command on remote computers. As a real world example, I want to check the status of a service on remote computers. I need however my function to be agile and accept the name of the service to check.
Since I am going to be using the Invoke-Command cmdlet, I need to pass the name of the service to the scriptblock parameter. Fortunatelly, this is fairly easy and cam be accomplished using the param statement in the scriptblock just like:
Invoke-Command -ComputerName $Computer ` -ScriptBlock {param($ServiceName) Get-Service -Name $ServiceName } ` -ArgumentList $ServiceName
Of course, the Get-Service has a ComputerName parameter for this purpose but this is just an example.