Я больше всего слежу базовый пример в 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.