2

Почему такие командлеты, как Test-NetConnection больше не доступны? Похоже, весь модуль NetTCPIP не в v6. Есть ли список устаревших командлетов в Powershell Core?

Get-Module -n Microsoft.PowerShell.Management | select -exp ExportedCommands в v6 примерно вдвое меньше, чем в v5.

1 ответ1

1

PowerShell 6 является кроссплатформенным, поэтому необходимо было переписать или удалить командлеты, основанные на собственных функциях. Очевидно, Microsoft так и не удосужилась переопределить Test-NetConnection для других платформ. Командлеты, которые управляют только системами Windows (например, Storage Spaces), должны были быть удалены. Чтобы получить список всех отсутствующих командлетов, вы можете использовать PowerShell!

Сначала запустите это в PowerShell 5:

Get-Command | select Name, Source | Export-Csv .\cmds5.csv

Затем снова запустите его в PowerShell 6 с другим выходным файлом:

Get-Command | select Name, Source | Export-Csv .\cmds6.csv

Затем мы можем проанализировать файлы на наличие различий, используя любую версию 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 }

Я проверил это на Windows 10 1703 x86 VM, которая должна иметь довольно свежие среды PowerShell. Я использовал v6.0.2 для PowerShell 6, самой последней стабильной версии. Из 1493 команд в PowerShell 5 1139 были удалены в PowerShell 6. Я положил их всех в суть. Из 425 команд в PowerShell 6 71 являются новыми, но все, кроме трех, связаны с желаемой конфигурацией состояния. Последние три - это « Get-Uptime доступности», « Remove-Alias и « Remove-Service . Вы можете увидеть все новые команды в этой другой сущности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .