要导出到CSV的PowerShell代码

要导出到CSV的PowerShell代码,powershell,csv,Powershell,Csv,下面我有两个Powershell scrips,它们执行不同的操作,但我需要它们在导出到CSV时执行大致相似的操作 Get-ChildItem C:\Users\user\Desktop\here -Recurse | where {!$_.PSIsContainer} | Select-Object * | Export-Csv -NoTypeInformation -Path C:\Users\user\Desktop\Output\output.csv | % {$_.Re

下面我有两个Powershell scrips,它们执行不同的操作,但我需要它们在导出到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时,它会让我通过文本导入向导,而另一个没有


我想不出一种自动化文本向导部分的方法,有人能给我提供一些见解吗?另外,如果您有办法对其进行优化,请也告诉我。

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

如果您的
plink.exe
命令(最终)运行
df-h
,结果将不是一个CSV文件-相反,您将得到以空格分隔的列。另一方面:
| Select Object*
没有明显的用途,
{$.Replace(“,”)
,因为
导出CSV
不会产生任何输出(除了写入文件),因此不会通过管道发送任何内容。为什么不重写plink.exe在PowerShell中所做的任何操作?您试图从两个完全不同的方法中获得相同的输出。问题的定义不是很明确。@Theincorgible1可能是因为他在Linux上没有PowerShell(?)主机
plink
正在运行上的命令。是的,我在linux上没有powershell,因此我使用putty(plink)将其ssh到其中并运行命令。您好,这使所有内容都在1个单元格中打开,而不是打开文本向导。这是UNIX行的结尾,我已更新了我的答案以修复此问题。