在 PowerShell 中为变量中的每一行初始化数组
Initialize Array forEach line in a variable in 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-Object
cmdlet 而不是 Select-Object -Unique
(以下假设您的 csv 中有一个 Username
列):
$Org |Group-Object Department |Select-Object @{Name='Dept';Expression='Name'},@{Name='Users';Expression={ @($_.Group.Username) }}
这将为每个唯一的 Department
值创建一个对象,具有两个属性:Dept
(部门名称)和 Users
,与部门关联的一组用户名
我正在尝试为 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-Object
cmdlet 而不是 Select-Object -Unique
(以下假设您的 csv 中有一个 Username
列):
$Org |Group-Object Department |Select-Object @{Name='Dept';Expression='Name'},@{Name='Users';Expression={ @($_.Group.Username) }}
这将为每个唯一的 Department
值创建一个对象,具有两个属性:Dept
(部门名称)和 Users
,与部门关联的一组用户名