2010-12-15 5 views
1

나는 간단한 powershell 스크립트를 가지고있다. 두 개의 매개 변수가 필요합니다. 둘 다 문자열 인수를 취하는 메소드 (Get-ResourcePool)의 일부입니다. 잘 작동cmd에서 많은 args를 가진 powershell 스크립트를 호출

functName CI *FMS 

: 내가 지금처럼 PowerShell 스크립트에서 함수 정의를 호출하는 경우

.

이 (그래서 같이이 스크립트는 외부에서 호출 할 수 있기 때문에) PowerShell의 함수 호출된다

나는 내가 설치된 모든 필요한 스냅인 (snapin)이 파워 쉘 편집기에서이 전화를하려고
FuncName $($args[0], $args[1]) 

, like :

C:\Script.ps1 A "*s" 

여기서 scrpt는 .ps1 파일의 이름입니다. 하나의 기능이 있습니다. 그러나 인수가 널이거나 비어있는 오류로 실패합니다.

왜 그런가?

EDIT :

함수 서명은 :

함수 RevertToSnapshot ($ otherarg, $ 와일드) I 여기서 $ 와일드 카드를 사용할

: $에서 SearchString = 선택 System.String] :: CONCAT ("*", $ VMWildcard) 이름 $ SearchString (이름은 powercli에서 get-vm에 대한 매개 변수입니다).

답변

5

이 호출 스타일 :

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

가 funcname에 전달 단지 하나의 인수가 발생합니다 - 두 요소를 하나의 배열입니다. 당신은 아마 원하는 : 당신이하는 cmdlet, 함수, 공간 분리 인수없이 괄호를 사용하여 별칭을 호출 PowerShell을 일반적으로

FuncName $args[0] $args[1] 

을. .NET 메서드를 호출하는 것은 괄호와 쉼표를 사용하여 인수를 구분해야하는 경우에 한 가지 예외입니다.

[string]::Concat('ab','c') 
관련 문제