2011-02-10 12 views
2

C#でPowerShellを使用してExchange 2010操作を実行したいと考えています。私は以下のように接続を確立することができます。私の質問:どのように明示的に資格情報を指定せずに接続を作成できますか?現在のWindowsのユーザーIDで取得できないのですか?Exchange 2010 + PowershellとC#の問題現在のユーザーからPSCredentialを取得する

SecureString password = new SecureString(); 
string str_password = "pass"; 
string username = "userr"; 
string liveIdconnectionUri = "http://exchange.cccc.com /Powershell?serializationLevel=Full"; 

foreach (char x in str_password) 
{ 
password.AppendChar(x); 
} 

PSCredential credential = new PSCredential(username, password); 

// Set the connection Info 
WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(liveIdconnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential); 

connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default; 
+1

CredentialCache.DefaultCredentials&DefaultNetworkCredentialsは空です。 – hoetz

答えて

2

セキュリティトークンからPSCredentialオブジェクトを作成する方法がわかりません。私は一般的なワークフローは、セキュリティの上昇に関連する穴を避けるために、これらの状況でユーザーに資格情報を要求することだと思います。

おそらく、PSHostUserInterface.PromptForCredentialsメソッドを使用してユーザーに資格情報を入力する必要があります。

キャッシュの資格情報の例は、"PowerShell Script: Export-PSCredential and Import-PSCredential"です。自己責任で使用してください。

3

Try [System.Net.NetworkCredential]::DefaultCredentialsドキュメントから:

DefaultCredentials アプリケーションが実行されている現在の のセキュリティコンテキストの システム資格情報を表します。 クライアント側アプリケーションの場合、通常、アプリケーションを実行する ユーザーのWindows資格情報(ユーザー の名前、パスワード、およびドメイン)は です。

この機能PoshCode.org scriptからPSクレドにネットクレドから変換する方法を示しています

Function ConvertTo-PSCredential { 
#.Synopsis 
# Helper function which converts a NetworkCredential to a PSCredential 
Param([System.Net.NetworkCredential]$Credential) 
    New-Object System.Management.Automation.PSCredential ` 
       "$($Credential.UserName)@$($Credential.Domain)", ` 
       (ConvertTo-SecureString $Credential.Password -AsPlainText -Force) 
} 

注元PoshCode機能は、私が削除されたことをその中にいくつかの余分な、未使用のスクリプトを持っていたこと。

関連する問題