Powershell将变量导出到excel
好的,我的任务是在工作中学习powershell编写一些脚本。我有一些其他语言(只是一点点)的经验,比如Java、Python、HTML和CSS。Powershell是一个完全不同的野兽,所以我不确定有时候该怎么做。现在我正试图弄清楚如何将我的计算机名、域、用户名和日期时间输入excel文档。以下是我正在尝试的:Powershell将变量导出到excel,excel,powershell,Excel,Powershell,好的,我的任务是在工作中学习powershell编写一些脚本。我有一些其他语言(只是一点点)的经验,比如Java、Python、HTML和CSS。Powershell是一个完全不同的野兽,所以我不确定有时候该怎么做。现在我正试图弄清楚如何将我的计算机名、域、用户名和日期时间输入excel文档。以下是我正在尝试的: $compname = $env:COMPUTERNAME | Select-Object @{Name='Computer Name'; Expression={$_.Compute
$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让它们工作,但不是我想要的方式,我假设导出CSV是我的最佳选择。我的假设是错误的吗?当您对一个数组或一组对象(例如,
@(1,2,3)
是三元素数组)进行管道传输时,导出Csv
将每个对象视为一个单独的行
如果要将不同列中的所有值放在同一行中,则需要创建一个对象,其中每个列中都包含所需的属性
您可以使用newobject
cmdlet及其-Property
参数创建自定义对象。将属性分配给哈希表,并将其用作属性
参数,如下所示:
$Props = @{
"Date" = Get-Date -Format f
"Computer Name" = $env:COMPUTERNAME
"Username" = $env:USERNAME
"Domain" = $env:USERDNSDOMAIN
}
$MyObject = New-Object -TypeName psobject -Property $Props
现在,您可以通过管道将对象导出到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
$env:
变量没有单独的命名属性,它们只是字符串。在表达式中使用$\uu0
而不是$\u0.Name
,因此在第一个代码段中,是否向$Props添加属性?我以为这是在向它添加其他变量作为数组?好的,这正是我想要的,谢谢!在powershell中有很多不同的东西需要学习,我甚至都不知道该找什么。