С удивлением обнаружил, что некоторые администраторы находятся в заблуждении, что новые командлеты из систем Windows 2012 R2 и Windows 10 не работают для систем предыдущих версий, и в результате пользуются старыми проверенными утилитами командной строки. Использование таких утилит нормальное явление, а вот заблуждение по поводу командлетов надо развеять.
Командлеты, как правило, используют либо вызовы WMI, либо API конкретных приложений для выполнения операций. Хорошая новость в том, что значительная часть новых командлетов использует те вызовы WMI и API, которые давно существуют – ещё со времен Windows Server 2003 и Windows XP! Безусловно WMI развивается, и в системах Windows Server 2008 и Windows 7 появились новые WMI классы. В последующих версиях WMI классов ещё больше. Тем не менее множество появившихся в новых версиях командлетов используют то, что уже было ранее в WMI и что мы ранее использовали с помощью командлета Get-WMIObject.
Так что при написании скрипта проверьте его совместимость с предыдущими версиями.
Вот, например, обращения к DHCP серверу 2008 R2
Get-DhcpServerv4Scope -ComputerName W2008R2.domain.ru
выдаст все диапазоны DHCP, а команда
Get-DnsServerZone -ComputerName W2008R2.domain.ru
все зоны DNS.
Остальные командлеты для DNS и DHCP также работают.
А вот
Get-SmbShare -CimSession W2008R2.domain.ru
выдаст ошибку, т.к. пространство имен ROOT/Microsoft/Windows/SMB не существует на старых версиях. Аналогичные проблемы с другими командлетами модуля для работы с SMB.
Filed under: Powershell, Windows | Tagged: Powershell, Windows, WMI |
Добавить комментарий