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
    }