在 foreach 中使用来自 CSV 的 属性 个名称

Using property names from a CSV in foreach

我正在尝试导入包含大量用户和计算机信息的 CSV。我正在使用此 CSV 来构建我的 Active Directory。我正在尝试构建计算机并遇到 foreach 循环问题,我相信我可能误解了它们。这是我的代码的相关部分:

$adusercsv = Import-CSV .\tst.csv
foreach ($_.computername in $adusercsv)
{
    if ($_.city -eq "Vancouver")
    {
        New-ADComputer -Name $_.computername -Path OU=Computers,OU=Vancouver,DC=VANDC
    }
    if ($_.city -eq "Calgary")
    {
        New-ADComputer -Name $_.computername -Path OU=Computers,OU=Calgary,DC=InternalCAL
    }
}

此代码抛出语法错误:

At line:21 char:12
+ foreach ($_.computername in $adusercsv)
+            ~
Missing 'in' after variable in foreach loop.
At line:21 char:39
+ foreach ($_.computername in $adusercsv)
+                                       ~
Unexpected token ')' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingInInForeach

如何从数组中读取每一行?

在此页面上查看 example

你可以这样试:

$adusercsv = Import-CSV .\tst.csv
foreach ($pc in $adusercsv)
{
    if ($pc.city -eq "Vancouver")
{
    New-ADComputer -Name $pc.computername -Path OU=Computers,OU=Vancouver,DC=VANDC
}
if ($pc.city -eq "Calgary")
{
    New-ADComputer -Name $pc.computername -Path OU=Computers,OU=Calgary,DC=InternalCAL
}
}

$_ 用于管道中的当前值。在这种情况下,你不应该使用它。

试试这个:

adusercsv = Import-CSV .\tst.csv
foreach ($computer in $adusercsv)
{
    if ($computer.city -eq "Vancouver")
    {
        New-ADComputer -Name $computer.computername -Path OU=Computers,OU=Vancouver,DC=VANDC
    }
    if ($computer.city -eq "Calgary")
    {
        New-ADComputer -Name $computer.computername -Path OU=Computers,OU=Calgary,DC=InternalCAL
    }
}

首先,$_ 是表示管道中当前对象的默认变量。您正在尝试将当前计算机分配给未定义变量的计算机名 属性...请改用此方法

$OUs = @{
    Vancouver = 'OU=Computers,OU=Vancouver,DC=VANDC'
    Calgary = 'OU=Computers,OU=Calgary,DC=InternalCal'
}
$aduserscsv = Import-CSV .\tst.csv
foreach ($row in $aduserscsv) {
        New-ADComputer -Name $row.Computername -path $OUs.($row.city)
}

这没有错误检查,这是可取的,但它演示了如何使用 foreach (){} 循环以及如何不需要检查城市的 属性 如果您值在您的源数据中