2

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

Export-PSSession コマンドレットを使用してセッションをエクスポートする方法を見つけました。そのエクスポートされたモジュールを Import-Module でインポートすると、1 つの問題を除いてすべてが正常に機能します。モジュールからコマンドレットを実行すると、GUI を介して対話的にパスワードを設定する必要があります。私が本当に望んでいるのは、スクリプトを非対話的な方法で実行しながら、モジュールをローカルにロードすることです。

これは可能ですか?

4

1 に答える 1

2

直面している問題は、インポートされたすべての関数に対して暗黙的に 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.

Credentials.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)
}
于 2011-03-23T01:39:44.677 に答える