要导出为CSV的PowerShell代码

时间:2017-07-26 02:24:45

标签: powershell csv

我下面有两个Powershell程序,他们做了不同的事情,但我们需要他们在导出为CSV时做大致类似的事情。

Get-ChildItem C:\Users\user\Desktop\here -Recurse |
  where {!$_.PSIsContainer} |
  Select-Object * |
  Export-Csv -NoTypeInformation -Path C:\Users\user\Desktop\Output\output.csv |
  % {$_.Replace('"','')}

获取有关目录的所有详细信息,当我在Excel中打开CSV时,所有内容都在不同的列中 - 完美。

plink.exe -ssh root@user -pw password -m C:\Users\user\Desktop\Scrips\LinuxScriptCommand.txt > C:\Users\user\Desktop\Output\Linux.csv

在我的云上运行df -h并返回我的驱动器上留下的空间,这就是我想要的,但是当我在Excel中打开此CSV时,它会让我通过文本导入向导,而另一个没有&#39 ;吨。

我无法找到自动化文本向导部分的方法,有人能为我提供一些见解吗?如果你有办法优化它,请告诉我。

1 个答案:

答案 0 :(得分:1)

df -h命令更改为以逗号分隔值输出:

df -h | awk '{print $1","$2","$3","$4","$5","$6" "$7}'

保存到单个单元格时遇到的问题是UNIX行结尾无法在Windows中正确显示。这可以通过替换它们来解决:

plink.exe -ssh root@user -pw password -m C:\Users\user\Desktop\Scrips\LinuxScriptCommand.txt | foreach { 
    if (([regex] "`r`n$").IsMatch($_) -eq $false) { $_ -replace "`n", "`r`n" } else { $_ } 
} | Set-Content "C:\Users\user\Desktop\Output\Linux.csv"

如果您使用的是较新版本的Powershell,则可以使用-File参数仅返回文件。当你删除其他不必要的部分时,这会使你的其他命令大大缩短:

Get-ChildItem C:\Users\user\Desktop\here -Recurse -File | Export-CSV C:\Users\user\Desktop\Output\output.csv -NoTypeInformation