如何将powershell中的管道输出格式化为行
我有一个脚本powershell来获取进程的PercentProcessorTime如何将powershell中的管道输出格式化为行,powershell,format,key-value,Powershell,Format,Key Value,我有一个脚本powershell来获取进程的PercentProcessorTime $Processes = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process) $Processes | %{ New-Object psobject -Property ` @{ Time = $_.PercentProcessorTime; Name = ($_.name -replace "#\d+", "" )}
$Processes = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process)
$Processes | %{ New-Object psobject -Property `
@{ Time = $_.PercentProcessorTime;
Name = ($_.name -replace "#\d+", "" )}}`
| ?{ $_.Name -notmatch "_Total|Idle" } `
| Group-Object Name `
| %{ New-Object psobject -Property `
@{ Name = $_.Name;
Sum = ($_.Group | Measure-Object Time -Sum ).Sum }} `
| Format-Table
结果格式如下:
但我想将结果格式化为以下格式以插入数据库:
【参考参考::)参考::)参考::)参考::)参考::)参考::)参考:)参考::)参考:)参考::)参考::)参考:)参考:)参考:)参考:)参考::)参考::)参考:)参考::)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)参考:)美国英语英语英语英语英语英语英语英语词汇词汇词汇词汇从从从从从从从从从英语英语英语英语英语虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟虚拟文文文文文文文中中)中)中,美国美国美国美国)参考#1=0 nscp=0PaSvc=0 pcdrmsvc=0 NSCHEM=0 ASDSvc=0 secugate64=0 WindowsSecuService=0 WinFil32=0 WmiPrvSE=0 svchost#9=0 papersrv64=0 WUDFHost=0 svchost#10=0 svchost#11=0 WmiP rvSE#1=0 PaTray=0 unsecapp=0 WmiPrvSE#2=0 LMS=0 SWMAgent=0
请帮我解决它。
非常感谢^ ^我不认为有一个“简单”的内置命令,但是不需要太多的时间来更新函数来完成您想要的操作:
$Processes = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process)
$procStrings = @()
$Processes | %{ New-Object psobject -Property `
@{ Time = $_.PercentProcessorTime;
Name = ($_.name -replace "#\d+", "" )}}`
| ?{ $_.Name -notmatch "_Total|Idle" } `
| Group-Object Name `
| %{
$procStrings += "$($_.Name)=$(($_.Group | Measure-Object Time -Sum ).Sum)"}
$procStrings -join " "
基本上,我添加了一个数组来保存字符串键/值,并用代码替换了最后一个新对象来创建所需的字符串。最后,它与空格连接以创建最终字符串
您完全可以跳过数组部分,直接构建字符串,而不是创建数组,我喜欢这种方法:)
它不包括“OK |”,在开始时,我不知道什么是OK,但我相信你可以添加自己来获得你想要的:)我不认为它有一个“简单”的内置命令,但它不需要太多的时间来更新函数来完成你想要的:
$Processes = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process)
$procStrings = @()
$Processes | %{ New-Object psobject -Property `
@{ Time = $_.PercentProcessorTime;
Name = ($_.name -replace "#\d+", "" )}}`
| ?{ $_.Name -notmatch "_Total|Idle" } `
| Group-Object Name `
| %{
$procStrings += "$($_.Name)=$(($_.Group | Measure-Object Time -Sum ).Sum)"}
$procStrings -join " "
基本上,我添加了一个数组来保存字符串键/值,并用代码替换了最后一个新对象来创建所需的字符串。最后,它与空格连接以创建最终字符串
您完全可以跳过数组部分,直接构建字符串,而不是创建数组,我喜欢这种方法:)
它不包括“OK |”,在开始时,我不知道什么是OK,但我确信您可以添加自己以获得所需的:)
Format-*
cmdlet用于显示格式,而不是生成数据。请在你的问题中直接包含你想要的结果,最好是作为文本,并附上解释。另外,请阅读。这是一个使用convertto stringdata的经典示例,默认情况下,PS不附带Convertfrom stringdata。Convertfrom stringdata将以哈希表格式断开数据,反之则将其作为键=值对。将帮助您使用它。Format-*
cmdlet用于显示格式,而不是生成数据。请在你的问题中直接包含你想要的结果,最好是作为文本,并附上解释。另外,请阅读。这是一个使用convertto stringdata的经典示例,默认情况下,PS不附带Convertfrom stringdata。Convertfrom stringdata将以哈希表格式断开数据,反之则将其作为键=值对。会帮你使用的。谢谢你的帮助。我做到了谢谢你的帮助。我做到了^^