Powershell导出variables为Excel

好的,所以我已经被赋予了在工作中学习PowerShell的任务来编写几个脚本。 我对Java,Python,HTML和CSS等其他语言有一些经验(只是一点点)。 Powershell变成了一个完全不同的野兽,所以我不确定如何去处理事情。 现在我想弄清楚如何让我的电脑名称,域名,用户名和date时间到一个Excel文档。 这就是我想要的:

$compname = $env:COMPUTERNAME | Select-Object @{Name='Computer Name'; Expression={$_.Computer_Name}} $domain = $env:USERDNSDOMAIN | Select-Object @{Name='Domain'; Expression={$_.Domain}} $user = $env:USERNAME | Select-Object @{Name='Username'; Expression={$_.Username}} $date = Get-Date -format F | Select-Object @{Name='Date'; Expression={$_}} $file = "$env:USERPROFILE\Desktop\test4.csv" $row = @($Date, $compname, $domain, $user) $row | Export-Csv $file -NoType 

我把我的variables放入一个数组希望它会帮助,但没有运气。 现在只有date正在打印。 其他variables都是空的,我不知道为什么。 我可以让他们使用Write-Out工作,但不完全是我想要的,我假定Export-CSV是我最好的select。 这个假设我错了吗?

当你pipe道一个数组或者一个对象集合(例如@(1,2,3)是3个元素的数组)时, Export-Csv将每个对象视为一个单独的行。

如果您想要在同一行的不同列中的所有值,则需要在每列中创build一个具有所需属性的对象。

您可以使用New-Object cmdlet及其-Property参数创build自定义对象。 将属性分配给散列表并将其用作Property参数,如下所示:

 $Props = @{ "Date" = Get-Date -Format f "Computer Name" = $env:COMPUTERNAME "Username" = $env:USERNAME "Domain" = $env:USERDNSDOMAIN } $MyObject = New-Object -TypeName psobject -Property $Props 

现在,您可以将对象传递给Export-Csv

 $FilePath = "$env:USERPROFILE\Desktop\test4.csv" $MyObject | Export-Csv $FilePath -NoTypeInformation 

如果要更改列的顺序(或者移除或添加新列),可以使用Select-Object

 $MyObject | Select-Object 'Date','Domain','Username','Computer Name' | Export-Csv $FilePath -NoTypeInformation