如何使用Powershell截获命令输出的指定字符串?

时间:2018-07-11 03:15:29

标签: powershell

我使用ipptool来获取当前打印作业的状态。

C:\Users\Administrator>ipptool http://localhost/ipp/printers get-completed-jobs.test


job-id job-state job-name job-originating-user-name job-media-sheets-completed

------ --------- -------- ------------------------- --------------------------

14     canceled                RedHat                    1

13     completed               RedHat                    1

12     completed               RedHat                    1

11     completed               RedHat                    1

如何获取指定的工作ID和工作状态?

Powershell使用什么方法截取字符串?

问题1:

获取以下字符串:

14个已取消

问题2:

获取以下字符串:

已完成13次

已完成12次

问题3:

如何获取最新的工作ID和工作状态?

1 个答案:

答案 0 :(得分:2)

可从ConvertFrom-SourceTable PowerShell gallery)下载的cmdlet GitHub: iRon7/ConvertFrom-SourceTable能够读取以下类型的数据表:

$Jobs = ConvertFrom-SourceTable '

job-id job-state job-name job-originating-user-name job-media-sheets-completed

------ --------- -------- ------------------------- --------------------------

14     canceled                RedHat                    1

13     completed               RedHat                    1

12     completed               RedHat                    1

11     completed               RedHat                    1
'

在您的情况下,可能类似于:

$Jobs = $(.\ipptool http://localhost/ipp/printers get-completed-jobs.test) | ConvertFrom-SourceTable

其余的问题实际上是基本的PowerShell命令的问题。
如本例所示,Jobs对象将使您可以访问例如工作14的状态:

$Jobs | ?{$_."job-id" -eq 14} | Select -Expand "job-state"
canceled

和“ 如何获取最新的工作ID和工作状态?”:
(假设最近的工作总是在最前面)

$Jobs | Select  "job-id", "job-state" -First 1

job-id job-state
------ ---------
14     canceled

(有关其他ConvertFrom-SourceTable的示例,请参见:https://stackoverflow.com/search?q=ConvertFrom-SourceTable