【发布时间】:2020-08-25 19:08:41
【问题描述】:
我的目标是采用多个 PS 命令,将结果导出到单独的列中。数据之间没有关系。目前我运行 15-20 个单独的 PS 脚本,每个脚本将一列数据输出到自己的 csv 文件中。然后,我将这 15-20 个 csv 文档中的每一个都复制/粘贴到一个新的、单个电子表格中 - 到它们自己的列中。我试图通过运行一个脚本来提高这个过程的效率,该脚本会生成一个包含多个列的 csv 文件及其受尊重的结果。
Here is what my final output should look like:
Here is what my current output looks like
这是我当前的代码版本。尽管这是我最接近工作产品的一种,但我尝试了很多变体。
$ExportPath="\\NetworkLocation\test.csv"
$ADSG1="AD_Security_Group_Name"
$OUpath='OU=Servers,DC=sample,DC=sample,DC=org'
$TST_Script1=Get-ADGroupMember $ADSG1 | Select-object -ExpandProperty Name | Out-String
$TST_Script2=Get-ADComputer -Filter * -SearchBase $OUpath | Select-object -ExpandProperty Name | Out-String
$Object = [pscustomobject]@{
TST_Script1 = $TST_Script1
TST_Script2 = $TST_Script2
}
$Object | Export-Csv -Path $ExportPath -NoTypeInformation
【问题讨论】:
-
您需要遍历最大的集合并使用生成的索引构建 PSCO。
-
您有两个可能返回不同对象类型的脱节集合。您的两个命令都可以返回多个对象。将每个命令结果存储在一个变量中意味着每个命令都将是一个集合。
Export-Csv通过使用属性名称作为标题并将该属性的值作为数据行将输入对象转换为文本。如果有多个具有属性值的对象,那么每个值都会得到一行。您有一个具有一个属性的对象,该属性恰好包含一组值。结果,您得到一个数据行。
标签: powershell csv