powershell 中是否有类似 if else 或任何其他命令的逻辑来使 powershell 脚本非交互?
Is there any logic like if else or any other command in powershell to get the powershell script non-interactive?
我正在准备 powershell 脚本,通过 powershell 脚本将本地邮箱移动到在线邮箱,迁移后将分配许可证
示例如下:
#Created the user in AD , not mentioned here
Enable-Mailbox -Identity "$firstname $lastname" -Database "XXXXXXX"
Start-Sleep -Seconds 10
Set-Mailbox "$firstname.$lastname" -PrimarySmtpAddress "$firstname.$lastname@XXXXXXX" -EmailAddressPolicyEnabled $false
是否有任何逻辑,如 if-else 或我可以在这里使用的其他东西,一旦用户邮箱从本地交换同步到在线交换,就会触发下面的命令?所以下面的命令是 运行 成功而没有任何问题或错误。
Connect-ExchangeOnline
$Mailbox = "$firstname.$lastname@XXXXXXX"
$Endpoint = "XXXXXXXX"
$TargetDomain = "XXXXXXXXXXX"
$Cred = Get-Credential
New-MoveRequest -Identity $Mailbox -Remote -RemoteHostName $Endpoint -TargetDeliveryDomain $TargetDomain -RemoteCredential $Cred -Batchname "$Mailbox Move to O365"
是否有任何逻辑,如 if-else 或我可以在这里使用的其他东西,一旦邮箱迁移完成,就会触发下面的命令,然后执行下面的命令?
#Assign the license once migration is done successfully
Set-MsolUser -UserPrincipalName $Mailbox -UsageLocation US
Set-MsolUserLicense -UserPrincipalName $Mailbox -AddLicenses "XXXXXXXXXXXX"
注意-我可以在两者之间使用 Start-Sleep -Seconds XXX
但每次同步时间都不相同
以便在邮箱迁移后分配许可证;您首先需要在 while
循环中检查 move-request
的状态,如果状态更改为 Completed
则执行您的命令,如下所示:
$i = $true
while ($i){
if (Get-MoveRequest -Identity $Mailbox| where {$_.status -eq "Completed"}) {
Set-MsolUser -UserPrincipalName $Mailbox -UsageLocation US
Set-MsolUserLicense -UserPrincipalName $Mailbox -AddLicenses "XXXXXXXXXXXX"
$i = $False
} else {
sleep 10
}
}
我正在准备 powershell 脚本,通过 powershell 脚本将本地邮箱移动到在线邮箱,迁移后将分配许可证
示例如下:
#Created the user in AD , not mentioned here
Enable-Mailbox -Identity "$firstname $lastname" -Database "XXXXXXX"
Start-Sleep -Seconds 10
Set-Mailbox "$firstname.$lastname" -PrimarySmtpAddress "$firstname.$lastname@XXXXXXX" -EmailAddressPolicyEnabled $false
是否有任何逻辑,如 if-else 或我可以在这里使用的其他东西,一旦用户邮箱从本地交换同步到在线交换,就会触发下面的命令?所以下面的命令是 运行 成功而没有任何问题或错误。
Connect-ExchangeOnline
$Mailbox = "$firstname.$lastname@XXXXXXX"
$Endpoint = "XXXXXXXX"
$TargetDomain = "XXXXXXXXXXX"
$Cred = Get-Credential
New-MoveRequest -Identity $Mailbox -Remote -RemoteHostName $Endpoint -TargetDeliveryDomain $TargetDomain -RemoteCredential $Cred -Batchname "$Mailbox Move to O365"
是否有任何逻辑,如 if-else 或我可以在这里使用的其他东西,一旦邮箱迁移完成,就会触发下面的命令,然后执行下面的命令?
#Assign the license once migration is done successfully
Set-MsolUser -UserPrincipalName $Mailbox -UsageLocation US
Set-MsolUserLicense -UserPrincipalName $Mailbox -AddLicenses "XXXXXXXXXXXX"
注意-我可以在两者之间使用 Start-Sleep -Seconds XXX
但每次同步时间都不相同
以便在邮箱迁移后分配许可证;您首先需要在 while
循环中检查 move-request
的状态,如果状态更改为 Completed
则执行您的命令,如下所示:
$i = $true
while ($i){
if (Get-MoveRequest -Identity $Mailbox| where {$_.status -eq "Completed"}) {
Set-MsolUser -UserPrincipalName $Mailbox -UsageLocation US
Set-MsolUserLicense -UserPrincipalName $Mailbox -AddLicenses "XXXXXXXXXXXX"
$i = $False
} else {
sleep 10
}
}