我有這個腳本應該能夠在遠程和本地主機上運行。它接受-ComputerName作爲參數與'。' (localhost)作爲默認值。如果ComputerName是localhost或'。',則將powershell腳本作爲本地腳本運行。
目前我正在測試如何驗證新的遠程會話併爲它寫了一個小cmdlet。問題是,如果我用'。'來運行這個腳本。或localhost作爲ComputerName腳本嘗試連接到我的計算機上的一個新的遠程會話。這不起作用,因爲我沒有啓用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 }
}
所有的命令,試驗的WSMan,新的PSSession當他們以爲我想打一個遠程連接
是調用命令將失敗如果$ ComputerName是'。',那麼可以讓Powershell在本地會話中運行命令。或localhost,還是我必須在if/else子句中自己處理?
腳本意味着同時運行本地和遠程計算機上,我不想啓用是在本地運行腳本
感謝您的提示,仍然是Powershell的學習者,並沒有想到它將其作爲ScriptBlock。 – 2014-08-29 19:56:53
您沒有在Test-WsMan cmdlet上使用憑據;那是故意的嗎?它在這種情況下是否仍然返回有效結果? – 2014-08-30 15:50:31
我修改了他的腳本來回答他的問題。我沒有運行它,我不知道'Test-WSMan'是否需要憑證來完成它的工作。這是一個單獨的「問題」。 :-) – 2014-08-30 16:46:39