インポートされたPowerShellセッションを使用しながら、@Edu(Outlook.com)Liveを認証するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/5396446

質問

PowerShell経由でLive@EduのExchange 2010に接続しています。標準的な方法を使用して接続できます。ただし、特にこれはLANにはないため、毎回セッションコマンドをダウンロードしてインポートすることは無駄に思えます。さらに、時にはこれらのスクリプトがデータをWebページに返すことになり、インポート時間も無駄に思えます。

Export-PSSession CMDLETを使用してセッションをエクスポートする方法を見つけました。インポートモジュールでそのエクスポートモジュールをインポートすると、1つの問題を除いてすべてが正しく機能します。モジュールからcmdletを実行すると、GUIを介してインタラクティブにパスワードを設定することが期待されます。私が本当に望んでいるのは、私のスクリプトが非対話的な方法で実行されますが、モジュールをローカルにロードすることです。

これは可能ですか?

役に立ちましたか?

解決

あなたが直面している問題は、輸入されたすべての機能のPSSESSIONを暗黙的に設定できる必要があるということです。そのためには、実行できる必要があります Set-PSImplicitRemotingSession関数。

不快なことに、その関数はエクスポートされていないため、アクセスできません。これを解決するために必要なことは、PSM1ファイルを開いて、その関数を終了に追加することです $script:ExportModuleMember. 。これで、モジュールをインポートすると、その関数はすべての関数に対してPSSessionを設定できるようになります。

インポートされたモジュールを使用できるように、PowerShellまたはスクリプトが実行する必要があるものは次のとおりです。

Import-Module "C:\Credentials.psm1"
Import-Module "C:\ExportedPSSession.psm1"
$Cred = Import-Credential -path C:\Cred.xml
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/powershell/" -Authentication Basic -AllowRedirection -Credential $Cred
Set-PSImplicitRemotingSession -PSSession $Session -createdByModule $True
#You can now run any of the imported functions.

資格情報.psm1 注意してください! XMLファイルをロードできる人なら誰でもあなたになりすますことができます!

function Export-Credential($cred, $path) {    
  $cred = $cred | Select-Object *    
  $cred.password = $cred.Password | ConvertFrom-SecureString
  $obj = New-Object psobject
  $obj | Add-Member -MemberType NoteProperty -Name UserName -Value $cred.username
  $obj | Add-Member -MemberType NoteProperty -Name Password -Value $cred.password
  $obj | Export-Clixml $path
}

function Import-Credential($path) {    
  $obj = Import-Clixml $path    
  $obj.password = $obj.Password | ConvertTo-SecureString
    return New-Object system.Management.Automation.PSCredential( $obj.username, $obj.password)
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top