我有一个可以在本地或远程(通过 WinRM)运行的脚本,但是我希望它在远程计算机上运行时的行为略有不同。我意识到我可以将开关传递给脚本以识别它是在本地运行还是远程运行,但我想知道脚本本身是否可以检测它是否在远程运行?
问问题
5150 次
5 回答
11
Get-Host
返回,除其他信息外Name
:
PS> (Get-Host).Name 控制台主机 PS> (Invoke-Command -ComputerName dev2 -Script {Get-Host}).Name 服务器远程主机
于 2012-11-15T10:04:52.530 回答
6
if ($PSSenderInfo) {
"Running remote"
}
else {
"Running local"
}
于 2015-09-02T23:41:25.797 回答
0
您可以在 $MyInvocation 中检查计算机名:
PS>Invoke-Command -ComputerName smacnt01 -ScriptBlock {$MyInvocation}
PSComputerName : smacnt01
RunspaceId : 333f5333-0ca5-4461-8f38-cb086fbd1ea4
MyCommand : $MyInvocation
BoundParameters : {}
UnboundArguments : {}
ScriptLineNumber : 0
OffsetInLine : 0
HistoryId : -1
ScriptName :
Line :
PositionMessage :
InvocationName :
PipelineLength : 1
PipelinePosition : 1
ExpectingInput : False
CommandOrigin : Runspace
于 2012-11-15T09:09:56.140 回答
0
我认为如果你的脚本测试有可能
$myinvocation.mycommand.path -eq $null
然后如果是true
通过调用命令远程运行。
我没有准确地测试它,但我认为它可以工作。
于 2012-11-15T10:04:02.293 回答