7

ローカルまたはリモート (WinRM 経由) で実行できるスクリプトがありますが、リモート マシンで実行する場合は少し異なる動作をさせたいと考えています。スクリプトにスイッチを渡して、ローカルで実行されているかリモートで実行されているかを識別できることはわかっていますが、スクリプト自体がリモートで実行されているかどうかを検出できるかどうかを知りたいですか?

4

5 に答える 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

次に、trueInvoke-command を介してリモートで実行されている場合。

正確にテストしていませんが、動作すると思います。

于 2012-11-15T10:04:02.293 に答える