2010-12-15 63 views
1

J'ai un script powershell simple. Cela prend deux paramètres. Les deux font partie de méthodes (Get-ResourcePool) qui prennent des arguments de chaîne.Appel de script PowerShell avec de nombreux args de cmd

Si j'appelle la définition de la fonction dans le script Powershell, comme ceci:

functName CI *FMS 

Cela fonctionne très bien.

L'appel de fonction dans Powershell est (et comme parce que ce script sera appelé à l'extérieur):

FuncName $($args[0], $args[1]) 

J'essaie d'appeler cela de l'éditeur Powershell, où j'ai les snapins je besoin INSTALLE, comme ceci:

C:\Script.ps1 A "*s" 

Où scrpt est le nom de mon fichier .ps1. Il y a une fonction. Cela, cependant, échoue avec une erreur que l'argument est nul ou vide.

Des idées pourquoi?

EDIT:

La signature de la fonction est:

fonction RevertToSnapshot (otherarg $, wildcard $)

J'utilise $ wildcard ici: $ SearchString = [System.String] :: Concat ("*", $ VMWildcard) Nom $ SearchString (Nom est un paramètre à obtenir-vm dans powercli).

Répondre

5

Ce style d'appel:

FuncName $($args[0], $args[1]) 

Amènerons en un seul argument passé à FUNCNAME - un tableau unique avec deux éléments. Vous voulez sans doute:

FuncName $args[0] $args[1] 

En général, avec PowerShell vous appelez applets de commande, des fonctions, des alias en utilisant des arguments séparés par des espaces et pas parens. L'appel de méthodes .NET est la seule exception à cette règle où vous devez utiliser des parenthèses et des virgules pour séparer les arguments, par exemple:

[string]::Concat('ab','c')