【问题标题】:powershell increase threshold in parallelpowershell并行增加阈值
【发布时间】:2021-11-14 15:49:23
【问题描述】:

如何并行提高阈值。

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

 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


    
  
}

【问题讨论】:

    标签: powershell powershell-5.1


    【解决方案1】:

    看看这个例子,它展示了如何使用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
        }
    

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

    【讨论】:

    • 感谢您的帮助@daniel 非常感谢
    • @GlenSale,我的荣幸!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2012-10-09
    • 2023-04-10
    • 2015-01-11
    • 2020-06-22
    相关资源
    最近更新 更多