如何调试未生成 MOF 文件的 Powershell 所需状态配置?

如何调试未生成 MOF 文件的 Powershell 所需状态配置?

我最关注的是MSDN 上的基本示例我无法让它工作。我的配置定义如下:

Configuration MyWebConfig
{
   Param($ComputerName)

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

我正在尝试使用C:\Scripts> .\IisWithCompressionConfig.ps1 -ComputerName "localhost" -Outputpath C:\Scripts\localhost(以及其他几个命令行变体)生成 MOF。我没有得到任何文件输出,也没有报告任何错误(退出状态代码也是 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(config) 而不是IisWithCompressionConfig(file)。事实上,定义的 DSC 将位于Function:PSDrive 中。尝试在点源 PS1 之前和之后运行以下命令。之前,您应该看不到任何结果,之后,您应该MyWebConfigFunction:PSDrive 中看到结果。

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

在提供的 TechNet 示例中,他们使用的是 ISE。在步骤 4 中,他们MyWebConfig在当前 PS 会话中定义(而不是获取)配置。这在功能上等同于获取 PS1 文件的点。在步骤 6 之后,他们调用MyWebConfig,从而生成了 MOF。

相关内容