ローカルまたはリモート (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 に答える
1
Checking whether $profile
is defined works for me. I don't know how reliable this is, but various sources suggest that no profile is loaded in the remote session. I couldn't check the computername, as I don't have any way of knowing in advance which machine is local and which is remote.
$RunningLocally = $profile -ne $null
于 2015-04-27T13:11:04.417 に答える
0
$MyInvocation で computername を確認できます。
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
Invoke-command を介してリモートで実行されている場合。
正確にテストしていませんが、動作すると思います。
于 2012-11-15T10:04:02.293 に答える