Назад | Перейти на главную страницу

Как отладить конфигурацию желаемого состояния 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

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

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

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

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

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

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