2010-12-15 3 views
1

У меня есть простой сценарий powershell. Он принимает два параметра. Оба являются частью методов (Get-ResourcePool), которые принимают строковые аргументы.Вызов сценария powershell с множеством аргументов из cmd

Если я позвоню определение функции в сценарии Powershell, например, так:

functName CI *FMS 

Это прекрасно работает.

Вызов функции в Powershell есть (и как это потому, что этот сценарий будет называться снаружи):

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

Я пытаюсь вызвать это от редактора Powershell, где у меня есть snapins мне нужно все установленные, например:

C:\Script.ps1 A "*s" 

Где scrpt - это имя моего файла .ps1. Есть одна функция. Это, однако, терпит неудачу с ошибкой, что аргумент пустой или пустой.

Любые идеи, почему?

EDIT:

Функция подписи:

функция RevertToSnapshot ($ otherarg, $ подстановочные)

Я использую $ подстановочные здесь: $ SearchString = [System.String] :: Concat («*», $ VMWildcard) Имя $ SearchString (Имя является параметром для получения-vm в powercli).

ответ

5

Этот вызывающий стиль:

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

будет приводить только один аргумент, переданный имя_функции - единый массив с двумя элементами. Вы, вероятно, хотите:

FuncName $args[0] $args[1] 

В общем, с помощью PowerShell вы называете командлеты, функции, псевдонимы, используя пробел в качестве разделителя аргументов и никаких скобок. Вызов методов .NET является единственным исключением из этого правила, когда вы должны использовать парсеры и запятые для разделения аргументов, например:

[string]::Concat('ab','c') 
Смежные вопросы