I have this script that should be able to run on both remote and localhost. It accepts -ComputerName as parameter with '.' (localhost) as default.
Currently I am testing how to validate a new remote session and wrote a little cmdlet for it. Problem is, if I run this script with '.' or localhost as the ComputerName the script tries to connect to a new remote session on my computer. That will not work as I do not have PSRemoting enabled.
This is my test script:
Function Test-PsRemoting {
[CmdletBinding()]
param(
$ComputerName = ".",
$Credentials
)
$ErrorActionPreference = "Stop"
Test-Connection -ComputerName $ComputerName -Count 1 |
Format-List -Property PSComputerName,Address,IPV4Address,IPV6Address
Test-WSMan $ComputerName
$session = New-PSSession -ComputerName $ComputerName -Credential $Credentials
Invoke-Command -ComputerName $computername { 1 }
}
All of the commands, Test-WSMan, New-PSSession and Invoke-Command will fail as they assume I want to make a remote connection
Is it possible to let Powershell run the commands in the local session if $ComputerName is '.' or localhost or do I have to handle this myself in an if/else clause ?
The script is meant to run both local and on remote machines and I do not want PSRemoting enabled to be a requirement for running the script locally
invoke-command localhost
needs an elevated command prompt. – js2010