Como depurar a configuração de estado desejado do Powershell sem gerar arquivos MOF?

3

Estou seguindo o exemplo mais no MSDN e não estou conseguindo para o trabalho. Eu tenho minha configuração definida da seguinte forma:

Configuration MyWebConfig
{
   Param($ComputerName)

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

Estou tentando gerar o MOF com C:\Scripts> .\IisWithCompressionConfig.ps1 -ComputerName "localhost" -Outputpath C:\Scripts\localhost (e outras variantes da linha de comando). Eu não estou recebendo nenhuma saída de arquivo e nenhum erro é relatado (código de status de saída também é 0). Eu tentei uma versão sem a variável $ComputerName (e em vez disso "localhost" codificado), ainda nada. Sim, estou executando isso em um prompt elevado.

Eu me certifiquei de que estou executando o 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

Alguma idéia do que estou perdendo?

    
por skolima 25.11.2013 / 18:53

1 resposta

6

Com o DSC, eu coloco a fonte da definição de configuração na sessão atual, depois a chamo.

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

As configurações são bastante semelhantes às funções, ou seja, você deseja chamar MyWebConfig (config) não IisWithCompressionConfig (file). Na verdade, os DSCs definidos estarão no Function: PSDrive. Tente executar o seguinte antes e depois, você pontua o seu PS1. Antes, você não verá resultados. Depois, você verá MyWebConfig no Function: PSDrive.

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

No exemplo do TechNet fornecido, eles estão usando o ISE. Na etapa 4, eles estão definindo (em vez de terceirizar) o MyWebConfig config na sessão atual do PS. Isso é funcionalmente equivalente ao ponto de origem do arquivo PS1. Logo após o passo 6, eles chamam MyWebConfig , o que gerou o MOF.

    
por 25.11.2013 / 20:45