我想在arm模板内部运行一个PowerShell自定义脚本,所以它设置端口转发和设置防火墙,脚本如下
function set-proxy {
param(
[parameter(ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, HelpMessage = "proxy informations")]
[hashtable[]]$proxyinfos
)
foreach ($proxyinfo in $proxyinfos){
netsh interface portproxy add v4tov4 listenaddress=$($proxyinfo.listenaddress) `
listenport=$($proxyinfo.listenport) connectaddress=$($proxyinfo.connectaddress) connectport=$($proxyinfo.connectport)
}
}
function set-firewall {
param(
[parameter(ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, HelpMessage = "proxy informations")]
[hashtable[]]$proxyinfos
)
foreach ($proxyinfo in $proxyinfos){
New-NetFirewallRule -DisplayName $($proxyinfo.firewallrulename) -Direction $($proxyinfo.direction) `
-LocalPort $($proxyinfo.listenport) -Protocol $($proxyinfo.protocol) -Action $($proxyinfo.action)
}
}
set-proxy $proxyinfos
set-firewall $proxyinfos我希望proxyinfo可以作为哈希表的数组传递
$proxyinfos=@(
@{
listenaddress="10.1.10.20"
listenport="443"
connectaddress="10.1.10.20"
connectport="443"
firewallrulename= "port443"
direction="Inbound"
action="Allow"
protocol="TCP"
},
@{
listenaddress="10.1.10.20"
listenport="80"
connectaddress="10.1.10.20"
connectport="80"
firewallrulename= "port80"
direction="Inbound"
action="Allow"
protocol="TCP"
}
)但我在尝试如何从arm模板参数文件中传递它时遇到了一些困难。
如果我创建一个名为proxyinfos的数组参数
"proxyinfos": {
"value": [
{
"listenaddress": "10.1.10.20",
"listenport": "443",
"connectaddress": "10.1.10.20",
"connectport": "443",
"firewallrulename": "port443",
"direction": "Inbound",
"action": "Allow",
"protocol": "TCP"
},
{
"listenaddress": "10.1.10.20",
"listenport": "80",
"connectaddress": "10.1.10.20",
"connectport": "80",
"firewallrulename": "port80",
"direction": "Inbound",
"action": "Allow",
"protocol": "TCP"
}
]
}发布于 2021-10-20 10:56:39
当传递参数时,让它在最后工作,我要这样做
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -file configure-portforwarding.ps1 -proxyinfosjson ', string(parameters('proxyinfos')))]"因此,将此参数传递给powershell时,json如下所示
[{"listenaddress":"10.1.10.20","listenport":"443","connectaddress":"10.1.10.20","connectport":"443","firewallrulename":"port443","direction":"Inbound","action":"Allow
","protocol":"TCP"},{"listenaddress":"10.1.10.20","listenport":"80","connectaddress":"10.1.10.20","connectport":"80","firewallrulename":"port80","direction":"Inbound","action":"Allow","protocol":"TCP"}]在powershell内部
$proxyinfos= ConvertFrom-Json -InputObject $proxyinfosjsonhttps://stackoverflow.com/questions/69640012
复制相似问题