0

我想问一下是否有人可以请教一种如何将变量中的值分配给csv中的列的方法。

例如:

TriggeredBy | TriggeredTime | Firstname | Lastname | Username | ....

在我的脚本中,我正在修改输入数据,并且在旅途中我希望它可以将行填充到相关列。然后来自不同服务器的另一个脚本必须接管,读取计算值并将其计算结果添加到其专用列中。输出将是一行,我可以在其中看到所有结果。

最后,它应该用作一种数据库。

这里的脚本示例是:

$aduser = Get-ADUser -Filter {sAMAccountName -like $username} -Properties *
$Firstname = $aduser.GivenName 
$Firstname | Export-CSV -Path $filepath | Select-Object "First Name" 

$Lastname = $aduser.Surname 
$Lastname | Export-CSV -Path $filepath | Select-Object "Last Name" 

$TriggeredBy = $env:UserName 
$TriggeredBy | Export-CSV - Path $filepath | Select-Object "TriggeredBy" 

...

在整个过程中,所有内容都保存在一个相关行中。下一个过程对以下行等执行相同的操作...

“Export-CSV ....”部分显然是错误的,我需要一些替代方案

非常感谢!

4

1 回答 1

1

Select-Object计算属性一起使用:

Get-ADUser -Properties * -Filter "sAMAccountName -eq `"$username`"" |                            #`
  Select-Object @{ n='FirstName'; e='GivenName' },
                @{ n='Last Name'; e='Surname' },
                @{ n='TriggeredBy'; e={ $env:UserName } } |
    Export-Csv -NoTypeInformation -Literalpath $filePath

请注意,我使用了一个字符串作为-Filter参数,因为无论如何它最终都会变成这样。使用脚本块文字语法{ ... }很诱人,但最终导致的问题多于它解决的问题 - 请参阅此答案

请注意,在Windows PowerShell Export-Csv中,默认情况下会创建 ASCII(!) 编码文件,这可能会导致信息丢失;使用-Encoding参数来改变它。

相比之下,PowerShell [Core] v6+值得称道的是默认为(BOM-less)UTF-8;此外,
-NoTypeInformation那里不再需要开关。

如果要追加到现有的 CSV 文件(需要具有相同的列结构),请使用-Append开关。

于 2020-02-02T23:20:01.533 回答