Вызов сценария powershell со многими аргументами из cmd - PullRequest
1 голос
/ 15 декабря 2010

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

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

functName CI *FMS

Это отлично работает.

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

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

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

C:\Script.ps1 A "*s" 

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

Есть идеи, почему?

EDIT:

Сигнатура функции:

функция RevertToSnapshot ($ otherarg, $ wildcard)

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

1 Ответ

5 голосов
/ 15 декабря 2010

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

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

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

FuncName $args[0] $args[1]

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

[string]::Concat('ab','c')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...