Работа над несколькими функциями Powershell, которые подключаются к службам Office365 и автоматизируют многие из моих обычных задач. Обнаружено, когда у меня есть функция в psm1, при запуске функции для подключения к ExchangeOnline функции не отображаются на консоли, а только функции в пределах одного и того же модуля.
Хотя я знаю, что могу экспортировать модуль-член, это только работает для функций, когда модуль загружен, происходит задолго до того, как я подключаю-office365 -exchangeonline.
Есть ли способ экспортировать команды, загруженные при подключении к Office 365 после подключения?
Поместив Следуя функции в psm1 вместо ps1 и загружая ее, а затем выполняя connect-off365 -exchangeonline, все связанные с Exchange Online команды не могут использоваться в консоли. Тем не менее, имея ту же функцию в ps1 и загружая ее, функции ExchangeOnline работают.
Function Connect-Office365 {
Param(
[Switch]$ExchangeOnline,
[Switch]$EO
)
if ($EO) { $ExchangeOnline = $true }
elseif ($EO -and $ExchangeOnline) { Write-Warning "No need to declare ExchangeOnline and EO" }
$Credential = Get-Credential -message "Enter Office 365 credentials,`r`nor cancel to not connect to Office 365"
if ($null -eq $Credential) { Write-Host "Skipped entering credentials"; $TryAgain = $False }
if ($ExchangeOnline) {
Write-Host "Connecting to Exchange Online Services"
$global:ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection -EA stop
Import-PSSession $global:ExchangeSession -AllowClobber -DisableNameChecking
}
}
Например
PS C:\Users\TechWithAHammer> import-module C:\scripts\Connect-Office365.psm1
PS C:\Users\TechWithAHammer> connect-office365 -eo Connecting to MSOL Services Connecting to Exchange Online Services
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.0 tmp_3zvdxnnc.gd0 {Add-AvailabilityAddressSpace, Add-DistributionGroupMember...
PS C:\Users\TechWithAHammer> get-mailbox
get-mailbox : The term 'get-mailbox' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ get-mailbox
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-mailbox:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException