web-dev-qa-db-ja.com

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」がハードコードされた)バージョンを試しましたが、まだ何もありません。はい、私はこれを高架プロンプトで実行しています。

PowerShell4.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

私が欠けているアイデアはありますか?

3
skolima

DSCを使用して、構成定義を現在のセッションにドットソースし、それを呼び出します。

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

構成は関数と非常によく似ています。つまり、MyWebConfig(ファイル)ではなくIisWithCompressionConfig(構成)を呼び出します。実際、定義されたDSCはFunction:PSDriveにあります。 PS1をドットソースする前と後の両方で、次のコマンドを実行してみてください。前は結果が表示されないはずですが、後は​​Function:PSDriveにMyWebConfigが表示されます。

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

提供されているTechNetの例では、ISEを使用しています。ステップ4では、(ソーシングではなく)現在のPSセッションでMyWebConfig構成を定義しています。これは、PS1ファイルのドットソーシングと機能的に同等です。ステップ6の直後に、MOFを生成したMyWebConfigを呼び出します。

6
jscott