如何在脚本中添加多个函数,然后通过输入参数调用它们?例如,在下面的代码中它改变了局部区域连接中的配置,所以我想调用函数,如SscriptNAme -Change 192.168.0.1,255.255.255.255,192.168.0.2。我希望在同一个脚本中有其他功能,我也想通过输入参数来调用:
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 :(得分: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,如果其中一个必需参数为空或者不存在,该函数将抛出错误。
您还可以将参数分配给一个位置,这样您就不必使用这样的调用标记(在地址上显示):
Change $address -mask $mask -gw $gw
有关参数的更多信息:
但是我建议你不要以这种方式使用netsh甚至invoke-expression
,这种东西有cmdlet!例如:
Get-NetAdapter "Ethernet" | New-NetIPAddress $address -Defaultgateway $gw -PrefixLength $sn
答案 1 :(得分: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