Question

est-leur de toute façon à tester l'exactitude d'un script Powershell sans l'exécuter. Je sais que vous pourriez faire quelque chose de similaire à unix, mais ne trouve pas le equiv pour Powershell.

Essentiellement ce que j'ai est un référentiel de script, où chaque script est lié à la règle. Si un feu de règle, le script exécute, mais je dois être sûr que le script est valide, avant sa vente dans le référentiel.

Merci.

Salut, Eh bien, malheureusement la commande -whatif ne suffit pas. Sa syntaxe des scripts que je veux vérifier d'un moteur d'exécution C #, ce qui déclenche un script si un feu de règle du moteur. Avant les feux de script, j'écris en elle, les valeurs IList de la règle, puis-je faire feu. Mais je dois vous assurer qu'il est syntaxiquement correct, sinon je vais devoir compter sur l'auteur de la règle pour vous assurer qu'ils sont corrects, que je ne peux pas faire, comme beaucoup de gens écrit des règles, un seul scénario duff apportera la vers le bas moteur. Je ne peux pas le faire que le moteur est un produit de classe enterpise conçu pour une disponibilité de six sigma.

Je pense que la façon de le faire est d'utiliser ce qui est une v2 lib.

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

Je pense qu'il ya moyen de créer un ScriptBlock et de mettre un crochet try autour de lui pour attraper le ParseException. Quelqu'un peut-il me dire comment faire. Cela devient un véritable défi.

Merci.

Hey, Eh bien, je parlais à un gars dans MS (il est sharepoint h) et il a parlé à l'un des gars powershell, et il m'a informé qu'il n'y a pas de véritable moyen de Powershell v1 pour vérifier la syntaxe du script sans exécuter. Donc je suppose que le drapeau -whatif est le plus proche, mais il pas un vérificateur statique unfortumately. Les bonnes nouvelles sont, en v2 il est un moyen de tokenizer le flux d'entrée, via la classe Automation.PsParser, membre Tokenize. Cela tokenizer un script conformément aux grammes PS, donc si elle craps sur, est un script de merde. La question est v2 n'a pas une date de sortie encore.

Merci pour l'aide. Bob.

Était-ce utile?

La solution

La chose que vous voulez est prolly whatif / confirmer . Son port direct du monde Unix.

Autres conseils

Alors, demandez-vous pour l'exactitude fonctionnelle ou l'exactitude syntaxique?

Fonctionnellement vous auriez besoin de créer un test et l'environnement pour tester dans.

Syntaxiquement vous êtes à la recherche d'un vérificateur de code statique pour Powershell.

De nombreuses commandes PowerShell offrent un paramètre -whatif .

Je pense que vous avez besoin de quantifier ce que « valide » signifie pour vous. C'est un terme ambigu et peut signifier beaucoup de choses.

Si vous voulez dire quelque chose comme la vérification de la syntaxe de Perl, il n'y a pas d'équivalent exact d'un script PowerShell, avec PowerShell V1. Je ne suis pas sûr qu'il ya quelque chose dans la version 2 pour que ce soit.

La description que vous donnez fait sonner comme vous voulez quelque chose de plus qu'une simple syntaxe / « va l'exécuter » vérification de type. Comme @JoHannes Rossell dit, ce n'est pas trivial et est très spécifique à ce que vous faites.

Les méthodes mentionnées précédentes « whatif / confirment » dans les autres réponses ne fonctionnent que pour les applets de commande PowerShell, pas des scripts. Ils montrent ce que cmdlet ferait, pas une vérification de la syntaxe.

James

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top