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 `
}
}
如何使用 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 `
}
}