2014-10-20 2 views
0

스크립트 내에 둘 이상의 함수를 추가 한 다음 매개 변수를 입력하여 호출 할 수 있습니까? 아래 코드에서 예를 들어 로컬 영역 연결의 구성을 변경해야하므로 SscriptNAme -Change와 같은 함수를 호출하고 싶습니다. -Change 192.168.0.1, 255.255.255.255, 192.168.0.2.powershell의 함수 및 매개 변수

function Change{ 

$S=$executionContext.InvokeCommand.NewScriptBlock("netsh interface ip set address name = 'Local    Area Connection' source=static addr=$args[0] mask=$args[1] gateway=$args[2] gwmetric=0") 

} 

function ChangeOne{ 

$S=$executionContext.InvokeCommand.NewScriptBlock("netsh interface ip set address name = 'Local Area Connection' source=static addr=$args[0] mask=$args[1] gateway=$args[2] gwmetric=0") 

} 

사람이 올바른 방향으로 메신저 경우 말해 나에게 그것을 수행하는 방법에 대한 몇 가지 포인터를 제공 할 수 있습니다 : 나는 내가 또한 입력 매개 변수로 호출하고자하는 동일한 스크립트 내에서 다른 기능을 갖고 싶어. 감사

답변

0
function Change 
{ 
    param($addr, $mask, $gw, $metric=0) 
    $S=$executionContext.InvokeCommand.NewScriptBlock("netsh interface ip set address name='Local    Area Connection' source=static addr=$addr mask=$mask gateway=$gw gwmetric=$metric") 

} 

#To call use this, note, no commas between args, and $metric is defined 0 by default. 
Change 192.168.0.2 255.255.255.255 192.168.0.1 
1

당신은 1 구글 쿼리와이를 발견 할 수 있지만, 여기 당신은 간다 :

function Change{ 
param(
[parameter(Mandatory=$true,Position=0)] 
[string] $address, 
[parameter(Mandatory=$true)] 
[string] $mask, 
[parameter(Mandatory=$true)] 
[string] $gw, 
[int] $metric=0 
) 

Do Stuff 

} 

함수를 호출 :

Change -address $address -mask $mask -gw $gw -metric $metric 

미터가 필수 아닌 0으로 기본 설정됩니다.

매개 변수 address, mask 및 gw도 필수 매개 변수 중 하나 인 경우 값이 포함 된 경우 testet을 가져옵니다. eters가 비어 있거나 존재하지 않으면 오류가 발생합니다.

이 같은 호출 (주소 증명) 플래그를 사용할 필요 없다, 그래서 당신은 또한 매개 변수에게 위치를 지정할 수 있습니다

여기 매개 변수에 대한
Change $address -mask $mask -gw $gw 

더 :

Technet

그러나 netsh를 사용하지 않겠습니까? invoke-expression을 사용하지 않으려 고해도 이런 종류의 cmdlet이 있습니다! 예 :

Get-NetAdapter "Ethernet" | New-NetIPAddress $address -Defaultgateway $gw -PrefixLength $sn