Public/Get-Version.ps1
|
function Get-Version { <# .SYNOPSIS Get version information .DESCRIPTION Returns version information of the docker client and service. Wraps the command `docker version`. .LINK https://docs.docker.com/engine/reference/commandline/version/ .EXAMPLE PS C:\> $version = Get-DockerVersion PS C:\> $version.Client Version : 18.06.1-ce Goversion : go1.10.3 Experimental : false APIversion : 1.38 Gitcommit : e68fc7a Built : Tue Aug 21 17:21:34 2018 OSArch : windows/amd64 PS C:\> $version.Server Version : 18.06.1-ce Built : Tue Aug 21 17:36:40 2018 Experimental : false Goversion : go1.10.3 APIversion : 1.38 (minimum version 1.24) Gitcommit : e68fc7a Engine: : OSArch : windows/amd64 #> [CmdletBinding()] param ( # Specifies the number of seconds to wait for the command to finish. [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [int] $Timeout = 1 ) $versionOutput = & docker version --format "{{json .}}" 2>&1 if ( $LASTEXITCODE -ne 0 -or -not $versionOutput ) { Write-Error 'docker version did not return a valid result.' return } $dockerVersion = ($versionOutput | Out-String) | ConvertFrom-Json if ( -not $dockerVersion ) { Write-Error 'docker version output could not be parsed as JSON.' return } $client = [pscustomobject]@{ Version = $dockerVersion.Client.Version Goversion = $dockerVersion.Client.GoVersion Experimental = $dockerVersion.Client.Experimental APIversion = $dockerVersion.Client.ApiVersion Gitcommit = $dockerVersion.Client.GitCommit Built = $dockerVersion.Client.BuildTime OSArch = "$($dockerVersion.Client.Os)/$($dockerVersion.Client.Arch)" } $engine = $dockerVersion.Server.Components | Where-Object { $_.Name -eq 'Engine' } | Select-Object -First 1 $serverEngine = [pscustomobject]@{ Version = if ( $engine ) { $engine.Version } else { $dockerVersion.Server.Version } Goversion = if ( $engine ) { $engine.Details.GoVersion } else { $dockerVersion.Server.GoVersion } Experimental = if ( $engine ) { $engine.Details.Experimental } else { $dockerVersion.Server.Experimental } APIversion = if ( $engine ) { $engine.Details.ApiVersion } else { $dockerVersion.Server.ApiVersion } Gitcommit = if ( $engine ) { $engine.Details.GitCommit } else { $dockerVersion.Server.GitCommit } Built = if ( $engine ) { $engine.Details.BuildTime } else { $dockerVersion.Server.BuildTime } OSArch = "$($dockerVersion.Server.Os)/$($dockerVersion.Server.Arch)" } $server = [pscustomobject]@{ Version = $dockerVersion.Server.Version Goversion = $dockerVersion.Server.GoVersion Experimental = $dockerVersion.Server.Experimental APIversion = $dockerVersion.Server.ApiVersion Gitcommit = $dockerVersion.Server.GitCommit Built = $dockerVersion.Server.BuildTime OSArch = "$($dockerVersion.Server.Os)/$($dockerVersion.Server.Arch)" Engine = $serverEngine } [pscustomobject]@{ Client = $client Server = $server } | Write-Output } |