Pergunta

É a sua maneira de testar a exatidão de um script PowerShell sem executá-lo. Eu sei que você poderia fazer algo semelhante em Unix, mas não consegue encontrar o equiv para PowerShell.

Essencialmente, o que eu tenho é um repositório de script, onde cada roteiro está ligada à regra. Se uma regra incêndios, as executa script, mas eu preciso ter certeza que o script é válido, antes de sua put no repositório.

Graças.

Oi, Bem, infelizmente o comando -whatif não é suficiente. Sua sintaxe de scripts de eu querer verificar a partir de um motor de tempo de execução C #, que dispara um script se uma regra de motor de incêndios. Antes dos fogos de script, eu escrevo para ele, valores IList da regra, e então eu demiti-lo. Mas eu preciso para garantir que é sintaticamente correto, caso contrário eu vou ter que contar com o escritor regra para garantir que eles estão corretos, o que eu não posso fazer, como muitas pessoas vão escreveu regras, apenas um roteiro Duff vai trazer o motor para baixo. Eu não posso fazer isso como o motor é um produto de classe enterpise projetado para uptime de seis sigma.

Eu acho que a maneira de fazer isso é usar este, que é um lib v2.

http: // msdn.microsoft.com/en-us/library/system.management.automation.parseexception(VS.85).aspx

Eu acho que não há maneira de criar um ScriptBlock e colocando um try catch em torno dele para pegar o ParseException. Alguém pode me dizer como fazê-lo. Isso está se tornando um verdadeiro desafio.

Graças.

Ei, Bem, eu falei com um cara na MS (ele é sharepoint pm) e ele falou com um dos caras PowerShell e ele me informou que não há nenhuma maneira real na PowerShell v1 para verificar a sintaxe do script sem executar. Então eu acho que a bandeira -whatif é o mais próximo, mas não um verificador estático unfortumately. A boa notícia é, no v2 há uma maneira de tokenizar o fluxo de entrada, através da classe Automation.PsParser, membro Tokeniza. Isto irá tokenizar um script de acordo com as gramas PS, assim que se craps para fora, seu script de uma porcaria. A pergunta é v2 não tem uma data de lançamento ainda.

Obrigado pela ajuda. Bob.

Foi útil?

Solução

A coisa que você quer é pro whatif / confirmar . Seu porto direto do Unix mundo.

Outras dicas

Então, você está pedindo correção funcional ou correção sintática?

Funcionalmente que você precisa para criar um caso de teste e ambiente de teste em.

Sintaticamente você está procurando um verificador de código estático para PowerShell.

Muitos comandos PowerShell oferecem uma -whatif parâmetro.

Eu acho que você precisa para quantificar o que significa 'válido' para você. Isso é um termo ambíguo e pode significar um monte de coisas.

Se você quer dizer algo como verificação de sintaxe do Perl, não há equivalente exato para um script PowerShell, com o PowerShell V1. Eu não tenho certeza há alguma coisa em V2 para o que quer.

A descrição que você dá faz parecer que você quer algo mais do que apenas uma sintaxe / 'será que vai funcionar' exame de tipo. Como @JoHannes Rossell diz que não é trivial e é altamente específico para o que você está fazendo.

Os métodos anteriores mencionados 'whatif / confirmar' nas outras respostas só trabalho para cmdlets do PowerShell, não scripts. Eles mostram o que esse cmdlet faria, não uma verificação de sintaxe.

james

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top