1
我有一個非常簡單的powershell腳本,具有不同的行爲,具體取決於我是通過Invoke-Command/Enter-PSSession本地執行腳本還是遠程執行腳本。其他腳本正常工作。我想知道遠程會話的環境與本地會話有什麼不同,會導致這種差異。powershell - 本地執行和遠程執行之間的區別
我有一個非常簡單的powershell腳本,具有不同的行爲,具體取決於我是通過Invoke-Command/Enter-PSSession本地執行腳本還是遠程執行腳本。其他腳本正常工作。我想知道遠程會話的環境與本地會話有什麼不同,會導致這種差異。powershell - 本地執行和遠程執行之間的區別
假設遠程端點設置爲使用您的憑據,遠程會話可能有一組不同的可用模塊(或不同的版本),可能有一個配置文件腳本配置爲遠程會話運行,並且環境是可能會有所不同。還要注意,可以配置遠程端點來限制對命令(包括應用程序)的訪問,並限制語言模式。腳本也可以使用各種變量和函數來限制其可見性。如果你看一下會話狀態,你可以看到一些可以配置遠程端點例如爲:
PS> $ExecutionContext.SessionState
Drive : System.Management.Automation.DriveManagementIntrinsics
Provider : System.Management.Automation.CmdletProviderManagementIntrinsics
Path : System.Management.Automation.PathIntrinsics
PSVariable : System.Management.Automation.PSVariableIntrinsics
LanguageMode : FullLanguage
UseFullLanguageModeInDebugger : False
Scripts : {*}
Applications : {*}
Module :
InvokeProvider : System.Management.Automation.ProviderIntrinsics
InvokeCommand : System.Management.Automation.CommandInvocationIntrinsics
請參見本文的詳細信息上constrained endpoints時進行調整的屬性。所有這一切說,它可能是你使用的默認端點,通常是不受限制的。另一個區別可能是比特率。例如,您可以在x86外殼中運行,但連接到64位端點,反之亦然。如果需要連接到32位端點,請嘗試以下操作:
PS> $s = New-PSSession -cn localhost -ConfigurationName microsoft.powershell32
PS> icm -Session $s { [IntPtr]::Size }
4
PS> Remove-PSSession $s