O PowerShell 6 é de plataforma cruzada, portanto, os cmdlets que dependiam de funções nativas precisavam ser reescritos ou removidos. Aparentemente, a Microsoft nunca conseguiu reimplementar Test-NetConnection
para outras plataformas. Os cmdlets que gerenciam sistemas somente do Windows (por exemplo, Storage Spaces) precisavam ser removidos. Para produzir uma lista de todos os cmdlets ausentes, você pode usar o PowerShell!
Primeiro, execute isso no PowerShell 5:
Get-Command | select Name, Source | Export-Csv .\cmds5.csv
Em seguida, execute-o novamente no PowerShell 6 com um arquivo de saída diferente:
Get-Command | select Name, Source | Export-Csv .\cmds6.csv
Podemos analisar os arquivos por diferenças usando a versão do PowerShell:
$cmd5 = Import-Csv .\cmds5.csv
$cmd6 = Import-Csv .\cmds6.csv
$gone = $cmd5 | ? { $n = $_.Name; ($cmd6 | ? { $_.Name -eq $n }) -eq $null }
$new = $cmd6 | ? { $n = $_.Name; ($cmd5 | ? { $_.Name -eq $n }) -eq $null }
Eu testei isso em uma VM do Windows 10 1703 x86 que deveria ter ambientes PowerShell muito novos. Eu usei v6.0.2 para o PowerShell 6, a versão estável mais recente. Dos 1493 comandos no PowerShell 5, 1139 foram removidos no PowerShell 6. Coloco todos em uma essência . Dos 425 comandos no PowerShell 6, 71 são novos, todos, exceto três, que têm a ver com a configuração de estado desejada. Esses três últimos são Get-Uptime
, Remove-Alias
e Remove-Service
. Você pode ver todos os novos comandos em essa outra essência .