Power Shell脚本输出到txt文件

时间:2020-07-01 20:43:45

标签: powershell

这在使用Powershell的Windows 10上完美运行,但在Win Server 2012 R2上严重失败。 我已经尝试过使用重定向和-outfile进行多种形式的操作,但最终只能以空文件或损坏的脚本结尾。

任何人都可以帮我将下面的一根衬纸发送到Win Server 2012 R2上的txt文件中,我只是没收到

$((Get-WmiObject -Query "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor") | foreach-object { write-host "$($_.Name)    :    $($_.PercentProcessorTime)"}) *>&1 > output.txt

2 个答案:

答案 0 :(得分:1)

顾名思义,

Write-Host写入主机,该主机在控制台窗口中是该窗口的 display (屏幕),< em>绕过 PowerShell的(成功)输出流,后者是管道运算符(|)和重定向运算符>的作用。

仅在PowerShell v5 + 中,Write-Host写入信息输出流 (流号6-请参见about_Redirection帮助主题;默认情况下,该输出仍会到达 host ),因此 可以重定向-通过{ {1}}或通过6>-因此,将所有流重定向到成功输出流(*>)的包罗万象的重定向*>&1用于将1重定向到成功输出流,但在早期PowerShell版本中不是-和 PowerShell版本 4 <附带的Windows Server 2012 R2 / strong>。

但是,在您的情况下没有充分的理由使用Write-Host开始:要么使用Write-Output-cmdlet,其目的是写入成功输出流(Write-Host)-或最好使用PowerShell的隐式输出功能,其中未捕获到变量中,通过管道或重定向的任何输出(返回值)为隐式写入成功输出流:

1

请注意,命令中没有# Note how the use of "$($_.Name) : $($_.PercentProcessorTime)" # *by itself* implicitly causes it to be *output* (written to the pipeline). Get-WmiObject -Query "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor" | Foreach-Object { "$($_.Name) : $($_.PercentProcessorTime)" } > output.txt subexpression operator),这不是必需的。

如果列之间的特定间距不重要,则可以编写得更简单(由于仅选择了2个属性,因此应用了隐式Format-Table格式):

$(...)

注意:在PowerShell v3(于2012年9月发布)中,CIM cmdlet(例如,Get-WmiObject -Query "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor" | Select-Object Name, PercentProcessorTime > output.txt )取代了WMI cmdlet(例如,Get-CimInstance)。因此,应避免使用WMI cmdlet ,这尤其重要,因为将来所有努力都将在PowerShell [Core](版本6及更高版本)上执行,甚至没有 不再。有关更多信息,请参见this answer

答案 1 :(得分:0)

尝试此操作...请注意,该文件将追加到文件中,因此,如果运行两次,则将获得两次运行的数据

$((Get-WmiObject -Query "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor") | foreach-object { "$($_.Name)    :    $($_.PercentProcessorTime)" >> output.txt}) 


编辑

OP接受了这个作为答案,但这不一定是最好的解决方案。有关详细说明和其他解决方案,我建议使用a different answer submitted for this question.