Проблема, с которой вы сталкиваетесь, заключается в том, что вам нужно иметь возможность установить 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)
}