powershell并行增加阈值
powershell increase threshold in parallel
如何并行增加阈值。
我做了一些研究,它使用这些语法来增加但不确定如何在我的代码中实现。
ForEach-Object -throttleLimit 5 -parallel
我的代码:
foreach ($User in Import-Csv -Delimiter "," $importCSV) {
$Displayname = $User.DisplayName
$UserPrincipalName = $User.UserPrincipalName
$MailNickname = $User.MailNickname
$password = $User.Password
$SecureStringPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
New-AzADUser -DisplayName $Displayname -UserPrincipalName $UserPrincipalName -Password $SecureStringPassword -MailNickname $MailNickname -ForceChangePasswordNextLogin:$false | Select-Object -ExpandProperty UserPrincipalName
}
查看此示例,其中显示了如何使用 Foreach-Object -Parallel
重写 foreach
语句
foreach ($number in 1..10) {
$number
Start-Sleep -Milliseconds 250
}
1..10 | ForEach-Object -Parallel {
$_
Start-Sleep -Milliseconds 250
}
# $_ represents each object being processed
# $_ synonymous with $number in the foreach example
# Note: When `-ThrottleLimit` is not specified the default is 5.
你的 foreach 转换后看起来像这样
Import-Csv -Delimiter ',' $importCSV |
ForEach-Object -Parallel {
$Displayname = $_.DisplayName
$UserPrincipalName = $_.UserPrincipalName
$MailNickname = $_.MailNickname
$password = $_.Password
$SecureStringPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
New-AzADUser -DisplayName $Displayname -UserPrincipalName $UserPrincipalName -Password $SecureStringPassword -MailNickname $MailNickname -ForceChangePasswordNextLogin:$false | Select-Object -ExpandProperty UserPrincipalName
}
这可以通过为参数创建散列 table 并使用 splatting
来稍微清理一下
Import-Csv -Delimiter ',' $importCSV |
ForEach-Object -Parallel {
$params = @{
Displayname = $_.DisplayName
UserPrincipalName = $_.UserPrincipalName
MailNickname = $_.MailNickname
Password = ConvertTo-SecureString -String ($_.Password) -AsPlainText -Force
ForceChangePasswordNextLogin = $false
}
New-AzADUser @params | Select-Object -ExpandProperty UserPrincipalName
}
如何并行增加阈值。
我做了一些研究,它使用这些语法来增加但不确定如何在我的代码中实现。
ForEach-Object -throttleLimit 5 -parallel
我的代码:
foreach ($User in Import-Csv -Delimiter "," $importCSV) {
$Displayname = $User.DisplayName
$UserPrincipalName = $User.UserPrincipalName
$MailNickname = $User.MailNickname
$password = $User.Password
$SecureStringPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
New-AzADUser -DisplayName $Displayname -UserPrincipalName $UserPrincipalName -Password $SecureStringPassword -MailNickname $MailNickname -ForceChangePasswordNextLogin:$false | Select-Object -ExpandProperty UserPrincipalName
}
查看此示例,其中显示了如何使用 Foreach-Object -Parallel
foreach
语句
foreach ($number in 1..10) {
$number
Start-Sleep -Milliseconds 250
}
1..10 | ForEach-Object -Parallel {
$_
Start-Sleep -Milliseconds 250
}
# $_ represents each object being processed
# $_ synonymous with $number in the foreach example
# Note: When `-ThrottleLimit` is not specified the default is 5.
你的 foreach 转换后看起来像这样
Import-Csv -Delimiter ',' $importCSV |
ForEach-Object -Parallel {
$Displayname = $_.DisplayName
$UserPrincipalName = $_.UserPrincipalName
$MailNickname = $_.MailNickname
$password = $_.Password
$SecureStringPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
New-AzADUser -DisplayName $Displayname -UserPrincipalName $UserPrincipalName -Password $SecureStringPassword -MailNickname $MailNickname -ForceChangePasswordNextLogin:$false | Select-Object -ExpandProperty UserPrincipalName
}
这可以通过为参数创建散列 table 并使用 splatting
来稍微清理一下Import-Csv -Delimiter ',' $importCSV |
ForEach-Object -Parallel {
$params = @{
Displayname = $_.DisplayName
UserPrincipalName = $_.UserPrincipalName
MailNickname = $_.MailNickname
Password = ConvertTo-SecureString -String ($_.Password) -AsPlainText -Force
ForceChangePasswordNextLogin = $false
}
New-AzADUser @params | Select-Object -ExpandProperty UserPrincipalName
}