将两个变量作为两列导出到CSV文件

swvgeqrz  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(125)

我创建了两个变量,它们从一个特定的文件中选取多个值。下面是我的脚本的一部分:

#Identifying the AccountList.ain File Path
$AccountListPath = "$DataPATH\ADM\AccountList.ain"

#Create Variable for User Description & User ID
[xml]$UserInfoPath = gc $AccountListPath
$UserDescString = $UserInfoPath.AccountList.UserAccount.description
$UserInfoString = $UserInfoPath.AccountList.UserAccount.UserInfo.username

#Create User Description List & User Info (User ID) List
$UserDescObject = $UserDescString | Select-Object @{Name='Description';Expression={$_}}
$UserInfoObject = $UserInfoString | Select-Object @{Name='UserID';Expression={$_}}

以下是$UserDescObject变量的结果:

以下是$UserInfoObject变量的结果:

我尝试将$UserDescObject变量作为第1列导出到csv,将$UserInfoObject作为第2列导出到csv。
我尝试了两种不同的方法(对我来说都失败了)。

方法1:导出到CSV $UserDescObject,然后追加$UserInfoObject

这是我添加到上面脚本中的附加部分:

#Identifying the AccountList.ain File Path
$AccountListPath = "$DataPATH\ADM\AccountList.ain"

#Create Variable for User Description & User ID
[xml]$UserInfoPath = gc $AccountListPath
$UserDescString = $UserInfoPath.AccountList.UserAccount.description
$UserInfoString = $UserInfoPath.AccountList.UserAccount.UserInfo.username

#Export to CSV
$UserDescObject = $UserDescString | Select-Object @{Name='Description';Expression={$_}}
$UserDescObject | Export-Csv .\LDAPCrossWalkTable.csv -Force -NoType
$UserInfoObject = $UserInfoString | Select-Object @{Name='UserID';Expression={$_}}
$UserInfoObject | Export-Csv .\LDAPCrossWalkTable.csv -Append -NoTypeInformation

这是我在运行脚本后看到的错误:

方法#2:导出到CSV $UserDescObject、导入创建的CSV和附加$UserInfoObject

#Identifying the AccountList.ain File Path
$AccountListPath = "$DataPATH\ADM\AccountList.ain"

#Create Variable for User Description & User ID
[xml]$UserInfoPath = gc $AccountListPath
$UserDescString = $UserInfoPath.AccountList.UserAccount.description
$UserInfoString = $UserInfoPath.AccountList.UserAccount.UserInfo.username

#Create User Description List & User Info (User ID) List
$UserDescObject = $UserDescString | Select-Object @{Name='Description';Expression={$_}}
$UserInfoObject = $UserInfoString | Select-Object @{Name='UserID';Expression={$_}}

#Export User Description & User Info (User ID) Lists to CSV
$UserDescObject | Export-Csv .\LDAPCrossWalkTable.csv -Force -NoType
$ImportCSV = Import-CSV .\LDAPCrossWalkTable.csv
$ImportCSV | Select-Object *,@{Name='UserInfo';Expression={$UserInfoObject}} | Export-Csv .\LDAPCrossWalkTable.csv -NoTypeInformation

我几乎可以让两列都正确显示。我收到了两列。但是$UserInfoObject中的所有文本行都被添加到CSV文件的每一行中,而不是正确地分开:

这是我希望在csv文件中显示的内容:

任何投入都非常感谢!!

v6ylcynt

v6ylcynt1#

我可以使用数组来解决这个问题。下面是脚本:

#Identifying the AccountList.ain File Path
$AccountListPath = "$DataPATH\ADM\AccountList.ain"

#Create Variable for User Description & User ID
[xml]$UserInfoPath = gc $AccountListPath
$UserDescString = $UserInfoPath.AccountList.UserAccount.description
$UserInfoString = $UserInfoPath.AccountList.UserAccount.UserInfo.username

#Combine Description & Info as well as Export to CSV
$arr = @()
for ($i = 0; $i -lt $UserDescString.length; $i++) {
    $arr += [pscustomobject]@{Descripton=$UserDescString[$i];UserID=$UserInfoString[$i]}
}
$arr | Export-Csv .\LDAPCrossWalkTable.csv -Force -NoTypeInformation

相关问题