如何在Powershell中过滤和计算行变量?

时间:2016-01-19 23:44:51

标签: powershell

我正在努力解决问题,而这个深夜我无处可去。命令docker ps -a给出以下输出。

CONTAINER ID        IMAGE               COMMAND                  CREATED                  STATUS              PORTS                    NAMES
21cf52afa3d0        mysql:5.7           "/entrypoint.sh mysql"   Less than a second ago   Up 1 seconds        0.0.0.0:3307->3306/tcp   irrelevant-name
073795442e02        mysql:5.7           "/entrypoint.sh mysql"   Less than a second ago   Created                                      someother-mysql
cb1952b0e5ed        mysql:5.7           "/entrypoint.sh mysql"   3 minutes ago            Up 4 minutes        0.0.0.0:3306->3306/tcp   heist-mysql

我想要做的是计算包含-mysql的行数,并将其存储在变量中(在上面的例子中,值为2),以便稍后我可以使用它。

我已经看到了一些关于Select-String的事情,但到目前为止我没有抛出任何东西。我尝试了docker ps -a | Select-String -Pattern ("*-mysql")之类的东西,但到目前为止,一切都给了我一个错误。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果docker命令的结果解析类似于Get-Content,请尝试以下操作:

(docker ps -a | Select-String -Pattern "-MySQL" | Measure-Object).Count

答案 1 :(得分:0)

所有PowerShell命令都会生成对象。如果您不将对象存储在变量中或将其传递给另一个命令,PowerShell会在将对象显示给您之前将其转换为文本表示形式。 Select-String似乎不适用于从MappedByteBuffer命令返回的对象类型。

尝试docker ps