2013-01-02 275 views
1

我有一個非常簡單的powershell腳本,具有不同的行爲,具體取決於我是通過Invoke-Command/Enter-PSSession本地執行腳本還是遠程執行腳本。其他腳本正常工作。我想知道遠程會話的環境與本地會話有什麼不同,會導致這種差異。powershell - 本地執行和遠程執行之間的區別

回答

2

假設遠程端點設置爲使用您的憑據,遠程會話可能有一組不同的可用模塊(或不同的版本),可能有一個配置文件腳本配置爲遠程會話運行,並且環境是可能會有所不同。還要注意,可以配置遠程端點來限制對命令(包括應用程序)的訪問,並限制語言模式。腳本也可以使用各種變量和函數來限制其可見性。如果你看一下會話狀態,你可以看到一些可以配置遠程端點例如爲:

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 
相關問題