Powershell:作为脚本工作,但不作为模块工作

时间:2019-05-08 07:14:34

标签: powershell module

我编写了一个简单的代码,通过两个开关选项将控制台连接到不同的客户端和不同的服务

首先:选择客户/客户
第二:选择服务(Azure AD / Ex Online)

当我将其作为脚本运行时,它可以正常工作。 当我将其作为模块运行时,它仍然可以工作到选择“ Exchange Online”时,它将使用保存的凭据登录并“导入”一些数据。

但是例如Get-Mailbox是无法识别的命令-仅当我以脚本运行此命令时-尽管与O365的“连接”仍然有效。在这一步中,我必须再次重做Import-PSSession才能使这些命令正常工作。

有人可以在这里告诉我我做了什么或理解错了吗?

谢谢。

<#
    .SYNOPSIS
    Easy connect to different O365 Modules
    .DESCRIPTION
    Use the different options to connect to O365: AzureAD, Exchange Online, etc.
    .PARAMETER Client
    Enter the client you are trying to connect to.
    BUD (****)
    MEN (****)
    .PARAMETER Service
    Enter the service you need.
    Option 1: AAD (Azure AD)
    Option 2: Exchange (Exchange Online)
    .EXAMPLE
    Connect-O365 -Client BUD
    .NOTES
    Written by: Daniel Leiner
    Version:    1.2
    Date:       05/07/2019

#>

param(
[parameter(mandatory=$false)][string]$Client,
[parameter(mandatory=$false)][string]$Service
)

        if ([string]::IsNullOrEmpty($Client)) {

  $Client = switch (Read-Host "Hello, which client you want to connect to?" `n "1) BUD "`n "2) Men" `n "3) Different"`n)
{
        1 { "BUD"; break }
        2 { "MEN"; break }
        3 { "Unknown"; break }
        default { "Inkorrekte Eingabe" }

}
                                              }    
            If ($Client -eq "BUD")
                {$Cred = Get-StoredCredential -User admin@************}
        Elseif ($Client -eq "MEN")
                {$Cred = Get-StoredCredential -User admin@*************}
        Elseif ($Client -eq "Unknown")
                { $Cred = Get-Credential" }

      if ([string]::isNullorEmpty($Service)) {

 switch (Read-Host "Where do you want to connect to?" `n "a) AzureAD" `n "b) Exchange Online" `n)
                {
                    a { $service = "AAD"; break }
                    b { $service = "Exchange"; break }
                    default { "Incorrect Input." } 
                } 
                                            }

            if ($service -eq "AAD") 
            { Connect-AzureAD -Credential $cred }
        elseif ($service -eq "Exchange")
            { $global:worksession = New-PSSession -ConfigurationName Microsoft.Exchange -Credential $cred -ConnectionUri https://outlook.office365.com/powershell-liveid `
            -Authentication Basic -AllowRedirection 
        Import-PSSession $global:worksession -AllowClobber -DisableNameChecking
                        }

}

0 个答案:

没有答案