初始化PowerShell中变量中的每一行的数组



我正在尝试初始化CSV文件中每个唯一部门的数组。到目前为止,我有这个,它似乎没有按预期工作。

$Org = Import-Csv Org.csv
$Dept_Unique = $Org.Department | Select-Object -Unique

这给了我正确的输出,并将在CSV中列出所有部门的所有唯一值。

Accounting Team
Human Resources
Information Technology

然后,我尝试用一些随机值为每个部门初始化一个数组。

$Dept_Unique | ForEach-Object {
$_ = @('User1','User2','User3')
}

我的预期输出是…

${Human Resources}[1]
User2

然而,我得到了Cannot index into a null array.。这告诉我数组并没有按照我希望的方式初始化。任何帮助都将不胜感激,谢谢!

如果您想在不同变量中存储的值之后创建一个名为的新变量,请使用New-Variable:

$Dept_Unique | ForEach-Object {
New-Variable -Name $_ -Value @('User1', 'User2', 'User3')
}

但我怀疑您真正想要的只是根据部门对所有用户名进行分组-为此,您需要使用Group-Objectcmdlet而不是Select-Object -Unique(以下假设您的csv中有Username列(:

$Org |Group-Object Department |Select-Object @{Name='Dept';Expression='Name'},@{Name='Users';Expression={ @($_.Group.Username) }}

这将为每个唯一的Department值创建一个对象,具有两个属性:Dept(部门名称(和Users(与部门关联的用户名数组(

最新更新