我找不到解决这个问题的关键。我相信我对这个应用程序使用了正确的循环,但是当百分之百完成的条件是100%时,我不能让脚本停止。Do循环将永远运行。
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
$User = "thomas.smith@mailbox.com"
New-MoveRequest -Identity "$User" -Remote -RemoteHostName "remotemailboxaddress" -TargetDeliveryDomain "targetdomain.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Do {Get-MoveRequestStatistics -Identity "$User" -InformationVariable $Mailbox | Select-Object Displayname, StatusDetail, TotalMailboxSize, PercentComplete | Format-Table Displayname, StatusDetail, TotalMailboxSize, PercentComplete
Start-Sleep -Seconds 3
} Until ({Get-MoveRequestStatistics -Identity "$User" -InformationVariable $Mailbox | Select-Object PercentComplete} -eq 100)
Run Disconnect-ExchangeOnline once completed with migration
Disconnect-ExchangeOnline输出差不多也是我想要的。我希望它添加一个新的行,而不是重新创建整个表,当然,一旦完成100%的完成,就会停止。如果没有注释掉,脚本也将跳过断开-Exchange online的权限。
DisplayName StatusDetail TotalMailboxSize PercentComplete
----------- ------------ ---------------- ---------------
SMITH, Thomas WaitingForJobPickup 53.49 KB (54,770 bytes) 95
DisplayName StatusDetail TotalMailboxSize PercentComplete
----------- ------------ ---------------- ---------------
SMITH, Thomas WaitingForJobPickup 53.49 KB (54,770 bytes) 95
DisplayName StatusDetail TotalMailboxSize PercentComplete
----------- ------------ ---------------- ---------------
SMITH, Thomas ADUpdate 53.49 KB (54,770 bytes) 95
DisplayName StatusDetail TotalMailboxSize PercentComplete
----------- ------------ ---------------- ---------------
SMITH, Thomas Cleanup 53.49 KB (54,770 bytes) 99
DisplayName StatusDetail TotalMailboxSize PercentComplete
----------- ------------ ---------------- ---------------
SMITH, Thomas Completed 53.49 KB (54,770 bytes) 100
DisplayName StatusDetail TotalMailboxSize PercentComplete
----------- ------------ ---------------- ---------------
SMITH, Thomas Completed 53.49 KB (54,770 bytes) 100我真的尝试过让它工作,不同的循环条件,尝试在行上设置一个变量。没有运气,有什么想法吗?
发布于 2022-06-17 12:54:55
Select-Object输出一个包含所选属性的对象。若要获取属性值,请使用Select-Object -ExpandProperty PropertyName、ForEach-Object PropertyName或使用成员访问(Expression).PropertyName。
您可以通过捕获变量中第一个Get-MoveRequestStatistics调用的输出来删除第二个the调用。那么,在循环条件下获取PercentComplete属性的最自然的方法是使用成员访问。
do {
Start-Sleep -Seconds 3
$stats = Get-MoveRequestStatistics -Identity "$User" -InformationVariable Mailbox
$stats | Format-Table Displayname, StatusDetail, TotalMailboxSize, PercentComplete
}
Until( $stats.PercentComplete -eq 100 )我还删除了Select-Object,因为它是多余的。您已经为Format-Table命令选择了要显示的属性。
有一个小错误:-InformationVariable $Mailbox。变量名必须在没有$前缀的情况下传递。否则,PowerShell将把存储在变量$Mailbox中的值作为要分配信息流的变量的名称。这很可能不是你想要的。
https://stackoverflow.com/questions/72659178
复制相似问题