如何检查是否一个PowerShell脚本远程运行(How to check if a Powersh

2019-07-03 20:49发布

我有一个可以在本地或远程(通过WinRM的)运行的脚本,但是我想在远程机器上运行它表现略有不同。 我知道我可以在交换机传递给脚本,以确定它是否是本地或远程运行,但我想知道这是否是可能的脚本本身来检测它是否是远程运行?

Answer 1:

Get-Host的回报,除其他信息的Name

PS> (Get-Host).Name
ConsoleHost
PS> (Invoke-Command -ComputerName dev2 -Script {Get-Host}).Name
ServerRemoteHost


Answer 2:

    if ($PSSenderInfo) {
        "Running remote"
    }
    else {
        "Running local"
    }


Answer 3:

核查是否$profile是我定义的作品。 我不知道如何可靠,这是,但各种 来源表明,没有配置文件在远程会话中加载。 我无法检查计算机名,因为我没有提前知道的任何方式哪台机器是局部的,这是遥控器。

$RunningLocally = $profile -ne $null


Answer 4:

你可以在$ 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


Answer 5:

我认为这是可能在你的脚本测试,如果

$myinvocation.mycommand.path -eq $null

然后,如果是true经由调用指令远程运行。

我还没有准确的测试,但我认为它可以工作。



文章来源: How to check if a Powershell script is running remotely