Импорт определенной версии установленного ресурса

Область применения: Windows PowerShell 5.0

В PowerShell 5.0 отдельные версии ресурсов DSC можно устанавливать на компьютере параллельно. Модуль ресурсов может хранить отдельные версии ресурса в папке с именем версии.

Параллельная установка отдельных версий ресурса

Параметры MinimumVersion, MaximumVersion и RequiredVersion командлета Install-Module можно использовать, чтобы указать версию модуля для установки. Вызов командлета Install-Module без указания версии устанавливает последнюю версию.

Например, существует несколько версий модуля xFailOverCluster, каждая из которых содержит ресурс xCluster. Вызов командлета Install-Module без указания номера версии устанавливает последнюю версию модуля.

PS> Install-Module xFailOverCluster
PS> Get-DscResource xCluster
ImplementedAs   Name          ModuleName           Version    Properties
-------------   ----          ----------           -------    ----------
PowerShell      xCluster      xFailOverCluster     1.2.0.0    {DomainAdministratorCredential, ...

Чтобы установить определенную версию модуля, укажите RequiredVersion 1.1.0.0. При этом указанная версия устанавливается параллельно с установленной версией.

PS> Install-Module xFailOverCluster -RequiredVersion 1.1

Теперь при использовании Get-DSCResource отображаются обе установленные версии модуля.

PS> Get-DscResource xCluster
ImplementedAs   Name          ModuleName            Version    Properties
-------------   ----          ----------            -------    ----------
PowerShell      xCluster      xFailOverCluster      1.1        {DomainAdministratorCredential, Name, ...
PowerShell      xCluster      xFailOverCluster      1.2.0.0    {DomainAdministratorCredential, Name, ...

Указание версии ресурса в конфигурации

Если на компьютере установлены отдельные версии ресурсов, необходимо указать версию нужного ресурса при его использовании в конфигурации. Это делается путем указания параметра ModuleVersion ключевого слова Import-DscResource. Если не указать версию модуля ресурсов для ресурса, имеющего несколько установленных версий, конфигурация породит ошибку.

В конфигурации ниже показано, как указать версию ресурса для вызова:

configuration VersionTest
{
    Import-DscResource -ModuleName xFailOverCluster -ModuleVersion 1.1

    Node 'localhost'
    {
       xCluster ClusterTest
       {
            Name                          = 'TestCluster'
            StaticIPAddress               = '10.0.0.3'
            DomainAdministratorCredential = Get-Credential
        }
     }
}

Параметр ModuleVersion ключевого слова Import-DscResource недоступен в PowerShell 4.0. В PowerShell 4.0 версию модуля можно задать, передав объект спецификации модуля в параметр ModuleName ключевого слова Import-DscResource. Объект спецификации модуля представляет собой хэш-таблицу, содержащую ключи ModuleName и RequiredVersion. Пример:

configuration VersionTest
{
    Import-DscResource -ModuleName (@{ModuleName='xFailOverCluster'; RequiredVersion='1.1'} )

    Node 'localhost'
    {
       xCluster ClusterTest
       {
            Name                          = 'TestCluster'
            StaticIPAddress               = '10.0.0.3'
            DomainAdministratorCredential = Get-Credential
        }
     }
}

Этот способ также будет работать в PowerShell 5.0, однако рекомендуется использовать параметр ModuleVersion.

См. также раздел