Новые версии PowerShell, очевидно, будут содержать новые функции и новые командлеты. Это то, что важно учитывать при написании сценариев или пошаговых инструкций PowerShell, которые могут запускаться локально в системах с разными версиями.
Простым примером будет Get-FileHash
. Эта команда является новой для PowerShell 4.0 и не будет доступна для любой системы, работающей под управлением более ранней версии. Это будет особенно недоступно для любых систем, работающих под управлением Windows 7 SP0 (или Server 2008 R2 SP0) или ниже, поскольку PowerShell 4.0 вообще не поддерживается в этих системах.
Однако, помимо простого вопроса поддержки данной версии PowerShell, необходимо еще больше рассмотреть вопрос о том, какая версия операционной системы установлена. Например, Test-NetConnection
доступна (в настоящее время) только для Windows 8.1 (или Server 2012 R2) независимо от того, какая версия PowerShell установлена в системе, в которой установлена любая более ранняя операционная система.
Это довольно просто для сценариев или руководств, которые будут запускать команды PowerShell в локальной системе - если локальная система имеет версию A операционной системы и версию B PowerShell, вы можете использовать (и использовать только) любые команды, поддерживаемые в OS A с PS Б. Однако, это не так просто и ясно для случаев, когда скрипт обращается к удаленному компьютеру, на котором может быть запущена другая операционная система или версия PowerShell.
Итак, как различные версии PowerShell влияют на команды, выполняемые на удаленных компьютерах?
- Если в локальной системе установлена более поздняя версия, будут ли доступны более новые команды / функции для удаленной системы?
- Если в удаленной системе установлена более поздняя версия, существует ли простой (и пригодный для сценариев) способ использовать новые команды / функции против нее, когда локальная система их не поддерживает?
- Существуют ли общие правила, о которых можно помнить, чтобы знать, какие проблемы совместимости следует ожидать, или это что-то, что широко варьируется и нуждается в индивидуальном исследовании / тестировании для каждой используемой команды или функции?