2012-08-27 61 views
0

我有一個用於訪問遠程PowerShell的C#代碼,並在運行後出現此錯誤:拒絕訪問。 代碼:如何訪問模式遠程PowerShell?

string shell = "http://schemas.microsoft.com/powershell/Microsoft.PowerShell"; 
var target = new Uri("http://Computername/wsman"); 

Pipeline p = runSpace.CreatePipeline(); 
SecureString passing = new SecureString(); 
string password = "pass"; 
foreach (char c in password) 
{ 
    passing.AppendChar(c); 
} 
passing.MakeReadOnly(); 
var cred = new PSCredential(@"Domain\User", passing); 
var connectionInfo = new WSManConnectionInfo(target, shell, cred); runSpace = RunspaceFactory.CreateRunspace(connectionInfo);  
runSpace.Open(); 

,因爲我不能訪問這個地址發生此錯誤:http://schemas.microsoft.com/powershell/Microsoft.PowerShell

連接到它進入這個地址後,顯示此消息:在處理您的請求時出錯。

是否有另一個模式地址或另一種方式來寫這段代碼?

請幫幫我。 謝謝,

回答

0

首先,嘗試先從PowerShell訪問遠程機器。這將更容易調試IMO(而不是C#)的連接問題。你可以用下面的命令(從64位控制檯)連接:

$config = 'Microsoft.PowerShell' 
$connuri = 'http://Computername:5985/wsman' 
$s = New-PSSession -ConnectionUri $connuri -ConfigurationName $config -Credential (Get-Credential) 
Invoke-Command -Session $s -ScriptBlock {Get-PSSessionConfiguration} | Format-List * 

如果成功那麼也許你只是缺少端口號或有一個在你的C#編碼問題。但是,至少可以排除PowerShell配置問題(我懷疑)。

+0

謝謝,不,這個命令在最後一行給出這個錯誤:access in denied。 + CategoryInfo:NotSpecified:(:) [Get-ChildItem],InvalidOperationException + FullyQualifiedErrorId:System.InvalidOperationException,Microsoft.PowerShell.Commands.GetChildItemCommand。但我可以使用EnterPSSession連接到遠程PowerShell。 – mary

+0

我有另一個問題:當互聯網連接時,通過enterPSSesion與powershell的遠程連接不起作用並且出現此錯誤:連接到遠程服務器失敗,並顯示以下錯誤消息:WinRM客戶端無法在該時間內完成操作指定。檢查計算機名稱是否有效且可通過網絡訪問,並且啓用了Windows遠程管理服務的防火牆例外。請幫幫我。非常感謝。 – mary

+0

此機器上的網絡位置是否設置爲公開? FYI http://blogs.msdn.com/b/powershell/archive/2009/04/03/setting-network-location-to-private.aspx –