GurdeepS
GurdeepS

Reputation: 67243

Calling powershell script with many args from cmd

I have a simple powershell script. It takes two parameters. Both are part of methods (Get-ResourcePool) which take string arguments.

If I call the function definition in the Powershell script, like so:

functName CI *FMS

That works fine.

The function call in Powershell is (and like so because this script will be called from outside):

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

I try to call this from Powershell editor, where I have the snapins I need all installed, like so:

C:\Script.ps1 A "*s" 

Where scrpt is the name of my .ps1 file. There is one function. This, however, fails with an error that the argument is null or empty.

Any ideas why?

EDIT:

The function signature is:

function RevertToSnapshot($otherarg, $wildcard)

I use $wildcard here: $SearchString = [System.String]::Concat("*", $VMWildcard) Name $SearchString (Name is a parameter to get-vm in powercli).

Upvotes: 1

Views: 1428

Answers (1)

Keith Hill
Keith Hill

Reputation: 201952

This calling style:

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

Will result in just one argument passed to FuncName - a single array with two elements. You probably want:

FuncName $args[0] $args[1]

In general, with PowerShell you call cmdlets, functions, aliases using space separated arguments and no parens. Calling .NET methods is the one exception to this rule where you have to use parens and commas to separate arguments e.g:

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

Upvotes: 5

Related Questions