Powershell 3.0从远程共享导入二进制模块

时间:2013-11-21 20:05:28

标签: powershell remoting powershell-v3.0 powershell-remoting

此场景中有两台机器:

  • client.sub.domain.com(客户端机器PSRemoting到远程服务器)
  • server.sub.domain.com(客户端正在进入PSremoting的远程服务器)

我使用以下命令启动使用CredSSP执行“second-hop”身份验证的psremote会话:

$session = New-PSSession -cn server.sub.domain.com -Credential $credential -Authentication Credssp
Invoke-Command -Session $session -ScriptBlock {. '\\client\Profile\Microsoft.PowerShell_profile.ps1'}
Invoke-Command -Session $session -ScriptBlock { Import-Module \\client\Profile\Modules\Posh-SSH }

上面的最后一行产生下面的错误(我使用的任何二进制模块都会发生此错误)。我需要这个该死的错误才能消失!

无法加载文件或程序集'file:// \ client \ Profile \ Modules \ Posh-SSH \ Assembly \ Renci.SshNet.dll'或其依赖项之一。不支持操作。 (来自HRESULT的异常:0x80131515)+ CategoryInfo:validOperation:(:) [Import-Module],FileLoadException

以下是我尝试/验证的所有内容:

server.sub.domain.com

PS C:\Users\MKANET\Desktop\Dev>Get-WSManCredSSP
The machine is not configured to allow delegating fresh credentials.
This computer IS CONFIGURED to receive credentials from a remote client computer.

client.sub.domain.com

PS C:\Users\MKANET\Desktop\Dev>Get-WSManCredSSP
The machine IS CONFIGURED to allow delegating fresh credentials to the following target(s): wsman/*.sub.domain.com
This computer is not configured to receive credentials from a remote client computer.

我将以下内容放在客户端 $ PSHome \ Powershell.exe.config

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
    <runtime>
        <loadFromRemoteSources enabled="true"/>
    </runtime>
</configuration>

On Client :(我尝试运行以下命令,因为没有其他工作。不用说,这没有任何帮助。)

Set-Alias CasPol "$([Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory())CasPol.exe"
CasPol -pp off -machine -addgroup 1.2 -url file://\S858018\Profile\Modules\* FullTrust

在客户端和服务器上:

PS C:\Users\MKANET\Desktop\Dev>$psversiontable

Name                           Value
----                           -----
WSManStackVersion              3.0
PSCompatibleVersions           {1.0, 2.0, 3.0}
SerializationVersion           1.1.0.1
BuildVersion                   6.2.9200.16398
PSVersion                      3.0
CLRVersion                     4.0.30319.1008
PSRemotingProtocolVersion      2.2

1 个答案:

答案 0 :(得分:0)

在远程计算机上接收invoke-command的进程不是powershell.exe,而是wsmprovhost.exe。您需要更改该进程的配置文件,就像您对powershell.exe所做的那样,如果您希望它有任何效果。

在调试程序集加载问题时,可以使用

Fusion log。请务必在远程计算机上执行此操作,因为这是装配加载的地方。

你也试过远程机器上的caspol东西吗?