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