Как отладить конфигурацию требуемого состояния Powershell, не генерирующую файлы MOF?

Я следую самому основному примеру на MSDN и не могу заставить его работать. Моя конфигурация определена следующим образом:

Configuration MyWebConfig
{
   Param($ComputerName)

   Node $ComputerName {
      WindowsFeature MyRoleExample
      {
          Ensure = "Present"
          Name = "Web-Server"  
      }
    }
}

Я пытаюсь сгенерировать MOF с C:\Scripts> .\IisWithCompressionConfig.ps1 -ComputerName "localhost" -Outputpath C:\Scripts\localhost (и пара других вариантов командной строки). Я не получаю никакого вывода файла и об ошибках не сообщается (код состояния выхода также 0). Я пробовал версию без $ComputerName переменная (а вместо нее "localhost" жестко закодированная), все равно ничего. Да, я запускаю это в повышенном режиме.

Я убедился, что я использую PowerShell 4.0:

C:\Scripts> $PSVersionTable

Name                           Value                                                                                            
----                           -----                                                                                            
PSVersion                      4.0                                                                                              
WSManStackVersion              3.0                                                                                              
SerializationVersion           1.1.0.1                                                                                          
CLRVersion                     4.0.30319.34003                                                                                  
BuildVersion                   6.3.9600.16394                                                                                   
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}                                                                             
PSRemotingProtocolVersion      2.2

Есть идеи, что мне не хватает?

1 ответ

Решение

С помощью DSC я помещаю определение конфигурации в текущий сеанс, а затем вызываю его.

# dot source will load PS1 into current session
. .\IisWithCompressionConfig.ps1
# Then call the config
MyWebConfig -ComputerName "localhost"

Конфигурации очень похожи на функции, то есть вы хотите вызвать MyWebConfig (конфиг) нет IisWithCompressionConfig (файл). На самом деле, определенные DSC будут в Function: PSDrive. Попробуйте выполнить следующее как до, так и после того, как у вас будет источник PS1. Раньше вы не видели никаких результатов, после вы должны видеть MyWebConfig в Function: PSDrive.

Get-ChildItem Function:* | Where-Object { $_.CommandType -eq 'Configuration' }

В предоставленном примере TechNet они используют ISE. На шаге 4 они определяют (вместо поиска) MyWebConfig Конфиг прямо в текущей сессии PS. Это функционально эквивалентно точечному источнику файла PS1. Сразу после шага 6 они вызывают MyWebConfig, который породил МФ.

Другие вопросы по тегам