将值分配给 Powershell 中的特定 csv 列
Allocating values to specific csv columns in Powershell
我想问一下是否有人可以建议一种方法如何将变量中的值分配给 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 ...." 部分显然是错误的,我需要一些替代方法
非常感谢!
使用Select-Object
with :
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
请注意,我使用了 string 作为 -Filter
参数,因为无论如何它最终都会变成这样。使用脚本块文字语法 { ... }
很诱人,但最终导致的问题多于它解决的问题 - 请参阅 this answer.
请注意,在 Windows PowerShell Export-Csv
中默认创建 ASCII(!) 编码文件,这可能会导致信息丢失;使用 -Encoding
参数更改它。
PowerShell [Core] v6+,相比之下,值得称赞的是默认为(无 BOM)UTF-8;还有,
-NoTypeInformation
那里不再需要开关。
如果您想追加到现有的 CSV 文件(需要具有相同的列结构),请使用 -Append
开关。
我想问一下是否有人可以建议一种方法如何将变量中的值分配给 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 ...." 部分显然是错误的,我需要一些替代方法
非常感谢!
使用Select-Object
with
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
请注意,我使用了 string 作为 -Filter
参数,因为无论如何它最终都会变成这样。使用脚本块文字语法 { ... }
很诱人,但最终导致的问题多于它解决的问题 - 请参阅 this answer.
请注意,在 Windows PowerShell Export-Csv
中默认创建 ASCII(!) 编码文件,这可能会导致信息丢失;使用 -Encoding
参数更改它。
PowerShell [Core] v6+,相比之下,值得称赞的是默认为(无 BOM)UTF-8;还有,
-NoTypeInformation
那里不再需要开关。
如果您想追加到现有的 CSV 文件(需要具有相同的列结构),请使用 -Append
开关。