インポートされたPowerShellセッションを使用しながら、@Edu(Outlook.com)Liveを認証するにはどうすればよいですか?
-
28-10-2019 - |
質問
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)
}