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/ .PARAMETER Timeout Specifies the number of seconds to wait for the command to finish. .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 ( [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [int] $Timeout = 1 ) $output = ( Invoke-ClientCommand 'version' -Timeout $Timeout -StringOutput ).Split( [Environment]::NewLine ) $dockerVersionTable = @{ 'Client' = @{} 'Server' = @{} } $component = $null foreach ( $line in $output ) { switch -Wildcard ( $line ) { "" {} "Client:*" { $component = 'Client' } "Server:*" { $component = 'Server' } Default { if ( -not $component ) { throw "unexpected response from 'docker version'" } else { $key, $value = $line -Split ': ' | ForEach-Object { $_.Trim() } $componentVersionTable = $dockerVersionTable[$component] $componentVersionTable.Add($key.Replace('/', '').Replace(' ', ''), $value) } } } } New-Object PSObject -Property @{ Client = ( New-Object PSObject -Property $dockerVersionTable['Client'] ) Server = ( New-Object PSObject -Property $dockerVersionTable['Server'] ) } | Write-Output } |