Powershell将变量导出为ex​​cel

时间:2015-08-05 14:15:00

标签: excel powershell

好的,所以我被赋予了在工作中学习powershell的任务,以编写一些脚本。我对其他语言(只是一点点)有一些经验,比如Java,Python,HTML和CSS。 Powershell结果是一个完全不同的野兽,所以我不确定如何去做有时候的事情。现在我正试图找出如何将我的计算机名称,域名,用户名和日期时间转换为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

我将变量放入数组中,希望它有所帮助,但没有运气。现在只有日期打印。其他变量都是空的,我不知道为什么。我可以让他们使用Write-Out工作,但不是我想要的方式,我假设Export-CSV是我最好的选择。我错了这个假设吗?

1 个答案:

答案 0 :(得分:2)

当您管道数组或对象集合(例如 join( ',', map { $column_mapping{$_} } @$headers ), join( ',', ('?') x scalar @$headers ); 是3元素数组)时,@(1,2,3)将每个对象视为一个单独的行。

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

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

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