【问题标题】:Initialize Array forEach line in a variable in PowerShell在PowerShell中为变量中的每一行初始化数组
【发布时间】:2021-05-14 16:53:47
【问题描述】:

我正在尝试为 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.。这告诉我数组没有初始化我想要的方式。任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 添加另一个 foreach 以遍历您的用户数组。
  • 您必须使用Add-Member cmdlet 来执行此操作。你真正的目标是什么。
  • 听起来像你想要的$Org |Group-Object
  • @AbrahamZinala 你能给我看个样本吗?我不太明白该放在哪里。
  • @FoxDeploy 我的 CSV 包含所有用户及其所有部门,我想构建和排列将用户添加到各自的部门数组的位置

标签: arrays powershell foreach initialization foreach-object


【解决方案1】:

如果您想在存储在不同变量中的值之后创建一个新变量命名,请使用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,一组与部门关联的用户名

【讨论】:

  • 嗨,Mathias,感谢您的回复,后者正是我想要的。然而,它改变了我的逻辑,我有点困惑。现在我已经对部门和用户进行了相应的排序。我想将它写入每个部门的文本文件。示例 ``` group_id = 人力资源 group_members = User1, User2 group_id = 信息技术 group_members = User3 ``` 谢谢。
  • @script_newbie129 可能可以完成,但我不知道您的 csv 中有哪些数据 - 请使用 csv 文件的一些示例行(或至少是标题)更新您的问题,并准确描述您的目标输出格式
  • 嗨,马蒂亚斯,我想通了!我使用了您的一个衬里并将其放入另一个变量中,然后调用 Dept/Users 将其写入文本文件。然后我使用了这个: $myArray = "file1.csv","file2.csv" # 单引号解决方案 $a = "'$($myArray -join "','")'" $a # Result = 'file1 .csv','file2.csv' # 双引号解决方案 $b = '"{0}"' -f ($myArray -join '","') $b # Result = "file1.csv","file2 .csv”帮助我按照我需要的方式插入它。非常感谢!
  • @script_newbie129 如果我的回答解决了您的问题,请考虑通过单击左侧的复选标记将其标记为“已接受”。如果我的答案不充分,请随时在下面发布您自己的答案(并标记为已接受,这样问题就不会被列为“未回答”):-)
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2018-05-11
相关资源
最近更新 更多