我有一个脚本,应该能在远程和本地主机上运行。它接受“-ComputerName”作为参数,默认值为“.”(本地主机)。
目前我正在测试如何验证新的远程会话,并为此编写了一个小的 cmdlet。问题是,如果我使用“.”或本地主机作为计算机名称来运行此脚本,则脚本会尝试在我的计算机上连接到新的远程会话。这不起作用,因为我没有启用 PSRemoting。
这是我的测试脚本:
所有的命令,包括Test-WSMan, New-PSSession和Invoke-Command都会失败,因为它们默认假定我想建立一个远程连接。 如果$ComputerName是 '.' 或者 localhost,那么是否可以让Powershell在本地会话中运行这些命令?或者我必须在if/else子句中自己处理? 该脚本旨在在本地和远程机器上运行,我不希望运行该脚本需要启用PSRemoting。
目前我正在测试如何验证新的远程会话,并为此编写了一个小的 cmdlet。问题是,如果我使用“.”或本地主机作为计算机名称来运行此脚本,则脚本会尝试在我的计算机上连接到新的远程会话。这不起作用,因为我没有启用 PSRemoting。
这是我的测试脚本:
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 }
}
所有的命令,包括Test-WSMan, New-PSSession和Invoke-Command都会失败,因为它们默认假定我想建立一个远程连接。 如果$ComputerName是 '.' 或者 localhost,那么是否可以让Powershell在本地会话中运行这些命令?或者我必须在if/else子句中自己处理? 该脚本旨在在本地和远程机器上运行,我不希望运行该脚本需要启用PSRemoting。