PowerShell 工作流 - InlineScript Remoting

PowerShell Workflow - InlineScript Remoting

如何使用 PowerShell 工作流通过远程 PowerShell 与 Exchange Online 交互并利用并行 foreach、重试等工作流功能?

#

我一直找不到这方面的具体示例,但终于让它工作了,所以我想分享一下。此 PowerShell 工作流允许您并行查询 Exchange Online(也可以是本地 Exchange),自动重试错误并自我调节。

希望这对其他人有益(并且是 post 和 question/answer 的适当方式),如果您有使用远程处理的 PowerShell 工作流的其他示例,我很乐意看到它们。

workflow Test-ExchangeQuery {
    <#
    .Synopsis
       Short description
    .DESCRIPTION
       Long description
    .EXAMPLE
       Example of how to use this cmdlet
    .EXAMPLE
       Another example of how to use this cmdlet
    #>
    Param
    (
        # Username of account
        [Parameter(Mandatory=$true,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        [string[]]
        $Identity,

        # Exchange / AD Credentials
        [Parameter(Mandatory=$true)]
        [System.Management.Automation.PSCredential]
        [System.Management.Automation.Credential()]
        $Credential
    )

    Set-PSWorkFlowData -PSAllowRedirection $true

    ForEach -Parallel -ThrottleLimit (2) ($user in $Identity) {
        InlineScript {
            Get-Mailbox -Identity $using:user | Select-Object Name, PrimarySmtpAddress
        } -DisplayName "Querying Exchange" `
            -PSCredential $Credential `
            -PSConnectionUri "https://ps.outlook.com/powershell/" `
            -PSConfigurationName "Microsoft.Exchange" `
            -PSComputerName $null `
            -PSAuthentication Basic `
            -PSConnectionRetryCount 3 `
    }
}