Powershell foreach in foreach

问题描述 投票:0回答:1

我有一份 CSV 用户列表,我想检查他们的帐户是否被禁用,脚本工作得很好,但现在我想检查它们是否接近不同的域,而不仅仅是一个域。有简单的方法吗?

代码很简单,现在看起来像这样:

Import-Module ActiveDirectory
$csv = Import-Csv -Path “C:\temp\Users.csv”

# Check for how many users are in CSV the list
$HowManyUsers = (Get-Content C:\temp\Users.csv).Length-1
$Servers = @("D01", "D02", "D03", "D04", "D05")
$Total = 0

Foreach ($user in $csv)
{
$fname = $user.FirstName
$lname = $user.LastName

GET-ADUser -Filter {GivenName -eq $fname -and Surname -eq $lname} -Properties * | Select DisplayName, EmployeeID, Enabled
$Total++

}

我需要再做一次 foreach 还是有更简单的方法?我正在考虑这样做:

GET-ADUser -Filter {GivenName -eq $fname -and Surname -eq $lname} -Server $Servers -Properties * | Select DisplayName, EmployeeID, Enabled

但这行不通。

powershell foreach
1个回答
0
投票

这是一个更新的脚本示例。 $Total 已填充,因为 powershell 返回任何未捕获的输出(即 Get-ADUser 命令返回结果,而我们没有在变量中捕获,因此返回它)。

Import-Module ActiveDirectory
$csv = Import-Csv -Path “C:\temp\test.csv”

# Check for how many users are in CSV the list
$HowManyUsers = $csv.Count
$Servers = @("DC1", "DC2")

# Iterate CSV
$Total = $csv | %{
    $fname=$_.FirstName
    $lname=$_.LastName
    # Iterate Servers
    $Servers | %{
        Get-ADUser -Server $_ -Filter 'GivenName -eq $fname -and Surname -eq $lname' -Properties DisplayName, EmployeeID, Enabled | where enabled -eq $false
    }
}
Write-Host "Count is: " $Total.count

话虽如此,您确定不想要

-SearchBase
而不是
-Server
吗?

© www.soinside.com 2019 - 2024. All rights reserved.