Как отладить конфигурацию требуемого состояния 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
, который породил МФ.