Dan*_*Coy 1 powershell docker-desktop
我有一个 Powershell 脚本,我需要知道 Docker Desktop 当前是否正在运行。
我读到,一种方法是使用docker ps并查看是否返回容器列表或错误消息。但我很难在实际脚本中使用它。我还没有弄清楚如何正确捕获结果并对其采取行动。
这是我到目前为止所拥有的:
function IsDockerDesktopRunning()
{
$dockerPsResult = docker ps | Out-String
Write-Host "Result is:"
Write-Host $dockerPsResult
if (($dockerPsResult).StartsWith("error"))
{
return $false
}
return $true
}
$isRunning = IsDockerDesktopRunning
Write-Host $isRunning
Run Code Online (Sandbox Code Playgroud)
当它不运行时,结果如下所示:
error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.
Result is:
True
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,命令的输出看起来docker ps是在执行时获取的输出,并且变量未填充。
有没有办法正确捕获输出? 或者,我应该以不同的方式解决这个问题吗?
要捕获错误输出,请将 stderr 重定向到 stdout,如下所示。
$docker = docker ps 2>&1
Run Code Online (Sandbox Code Playgroud)
您可以使用它来确定 docker 桌面是否正在运行。
if((docker ps 2>&1) -match '^(?!error)'){
Write-Host "Docker is running"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1003 次 |
| 最近记录: |