Dado que las versiones 6.1 de PowerShell en Windows/Linux/OSX pasaron a GA, puede usar las nuevas propiedades de $PSVersionTable , OS , Platform y GitCommitId 
 Actualizar En v6.0.0-beta.3 hay algunos breaking changes :
- Cambiar el parámetro posicional para powershell.exe de -Command a -File
 $PSVersionTable en :
 Plataforma Win32NT Sistema operativo Microsoft Windows 10.0.15063 
PS C:\Users\LotPings> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.1.0
PSEdition                      Core
GitCommitId                    6.1.0
OS                             Microsoft Windows 10.0.17134
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
 Plataforma Unix SO Linux (ubuntu) 
PS /home/LotPings> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.1.0
PSEdition                      Core
GitCommitId                    6.1.0
OS                             Linux 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
 Plataforma Unix SO Darwin 
PS /Users/LotPings> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.1.0
PSEdition                      Core
GitCommitId                    6.1.0
OS                             Darwin 17.7.0 Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT 2018; root:xnu-4570.71.2~1/RE...
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
 En realidad, debería haber variables globales agregadas por la propia consola de PowerShell; sin embargo, no se consideran variables de entorno, por lo que no se mostrarían al usar dir env: para obtener una lista. Los específicos del sistema operativo que veo ahora son $IsLinux , IsMacOS y $IsWindows . Esta es de al menos PowerShell versión 6.0.0-rc y superior para Mac/Linux.
 Puede ver una lista de lo que está disponible usando solo Get-Variable (en una sesión nueva sin cargar su perfil, si solo desea lo que viene integrado de forma predeterminada).
 Para PowerShell Core (Powershell versión 6.0+), puede usar Variables automáticas:$IsLinux , $IsMacOS y $IsWindows .
Por ejemplo,
if ($IsLinux) {
    Write-Host "Linux"
}
elseif ($IsMacOS) {
    Write-Host "macOS"
}
elseif ($IsWindows) {
    Write-Host "Windows"
}
¿No hay variables de entorno que pueda ver en las otras plataformas para el sistema operativo?
Get-ChildItem -Path Env:
 En particular, al menos en Windows, hay una variable de entorno del sistema operativo, por lo que debería ser capaz de lograr esto usando $Env:OS .
Ya que ha pasado algún tiempo y el PowerShell Core (v6) el producto es GA ahora (el Core la marca se eliminó a partir de v7), puede determinar con mayor precisión su plataforma en función de las siguientes variables booleanas automáticas:
$IsMacOS
$IsLinux
$IsWindows