0

如何并行增加阈值。

我已经做了一些研究,它使用这些语法来增加,但不确定如何在我的代码中实现。

 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


    
  
}
4

1 回答 1

0

看一下这个例子,展示如何将foreach语句重写为 usingForeach-Object -Parallel

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
    }

这可以通过为参数创建一个哈希表并使用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
    }

于 2021-09-21T04:18:53.720 回答