Scripting Games Commentary: V – Remoting
In PowerShell we have a number of ways to perform actions on remote machines. Many of the scenarios in the Scripting Games introduced the need to perform some action on a remote machine.
Many of the solutions involved creating sessions, using invoke-command and then tearing down the sessions.
WHY?
The problem is to get a few bits of information off the remote machine. Do you know PowerShell is installed on the remote machine? It isn’t installed on all the machines in my environment.
There is a quick remoting technique for situations like this. We don’t want to, or can’t, establish a remote session. Look at the cmdlets with a –ComputeName parameter. These can work with remote machines without needing to configure PowerShell remoting. Which cmdlets? Glad you asked.
PS> Get-Help * -Parameter Computer* | format-wide
Get-WinEvent Get-Counter
Test-WSMan Invoke-WSManAction
Connect-WSMan Disconnect-WSMan
Get-WSManInstance Set-WSManInstance
Remove-WSManInstance New-WSManInstance
Invoke-Command New-PSSession
Get-PSSession Remove-PSSession
Receive-Job Enter-PSSession
Get-EventLog Clear-EventLog
Write-EventLog Limit-EventLog
Show-EventLog New-EventLog
Remove-EventLog Get-WmiObject
Invoke-WmiMethod Get-Process
Remove-WmiObject Register-WmiEvent
Get-Service Set-Service
Set-WmiInstance Get-HotFix
Test-Connection Restart-Computer
Stop-Computer
All of these cmdlets can access remote machines directly. Use them rather than remoting for the simple jobs they were designed for.