azure - 参数为空或空 - 开始作业
问题描述
尝试执行以下命令时出现参数为空错误。有没有办法可以在 start-job 中调用变量
$RG = "xx"
$Location1 = "xx"
$VNET1="xx"
$PublicIP1="xx"
$VNGW1 = "xx"
Start-Job {
New-AzVirtualNetworkGateway -Name $VNGW1 -ResourceGroupName $RG -Location $Location1 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn 65511 -IpConfigurations $gwipconf1 -EnableBgp $True
}
无法验证参数“名称”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。
解决方案
无法验证参数“名称”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。
如果没有 Start-Job cmdlet 中的参数列表,我们将无法使用这些变量。
我们已经创建了一个 PowerShell 脚本并在我们的环境中测试了以下脚本,它运行良好。我们可以通过以下两种方式使用 start-job 创建虚拟网络网关:
- 使用变量作为参数列表
- 在 Start-Job 中使用脚本
使用变量作为参数列表:
- 首先,我们使用以下 cmdlet 创建了虚拟网络网关的所有依赖资源:
$subnet = New-AzVirtualNetworkSubnetConfig -Name 'gatewaysubnet' -AddressPrefix '10.254.0.0/27'
$ngwpip = New-AzPublicIpAddress -Name ngwpip -ResourceGroupName "vnet-gateway" -Location "UK West" -AllocationMethod Dynamic
$vnet = New-AzVirtualNetwork -AddressPrefix "10.254.0.0/27" -Location "UK West" -Name vnet-gateway -ResourceGroupName "vnet-gateway" -Subnet $subnet
$subnet = Get-AzVirtualNetworkSubnetConfig -name 'gatewaysubnet' -VirtualNetwork $vnet
$ngwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name ngwipconfig -SubnetId $subnet.Id -PublicIpAddressId $ngwpip.Id
- 创建依赖项后,我们使用以下 Start-Job cmdlet 来创建虚拟网络网关:
$RG = "xx"
$Location = "xx"
$gwipconf = "xx"
$VNGW = "xx"
Start-Job {
New-AzVirtualNetworkGateway -Name $args[3] -ResourceGroupName $args[0] -Location $ args[1] -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn 65511 -IpConfigurations $ args[2] -EnableBgp $True
} -ArgumentList @($RG, $Location, $gwipconf, $VNGW)
在 Start-Job 中使用脚本:
- 在这里,我们创建了一个 PowerShell 文件(gateway.ps1)并存储在本地机器中,其中包含依赖资源的创建,然后是虚拟网络网关的创建(使用 start-job)。
New-AzResourceGroup -Location "UK West" -Name "vnet-gateway"
$subnet = New-AzVirtualNetworkSubnetConfig -Name 'gatewaysubnet' -AddressPrefix '10.254.0.0/27'
$ngwpip = New-AzPublicIpAddress -Name ngwpip -ResourceGroupName "vnet-gateway" -Location "UK West" -AllocationMethod Dynamic
$vnet = New-AzVirtualNetwork -AddressPrefix "10.254.0.0/27" -Location "UK West" -Name vnet-gateway -ResourceGroupName "vnet-gateway" -Subnet $subnet
$subnet = Get-AzVirtualNetworkSubnetConfig -name 'gatewaysubnet' -VirtualNetwork $vnet
$ngwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name ngwipconfig -SubnetId $subnet.Id -PublicIpAddressId $ngwpip.Id
New-AzVirtualNetworkGateway -Name myNGW -ResourceGroupName vnet-gateway -Location "UK West" -IpConfigurations $ngwIpConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "Basic" -CustomRoute 192.168.0.0/24
- 现在,我们已将上述 powershell 脚本文件路径作为参数传递给 Start-job 以创建 VPN 网关:
start-job -filepath \<pathofPowershellScript>
这是参考的示例输出:
推荐阅读
- reactjs - React:修改 webpack.config.js 以在 sass 文件中导入 json 变量?
- java - 在循环中添加第二个下拉列表后,Thymeleaf 下拉选项消失
- python - 如何将这个 for 循环变成列表理解
- reactjs - 如何使用 ReactJs 进行无限滚动
- laravel - 如果未选中,则对单选按钮进行自定义验证 | 顺风
- r - 带条件的逐行迭代
- java - 当新对象是原始对象的一部分时,将对实例的引用传递给另一个对象?
- python - 在python中的dict列表中获取特定的键值
- android-activity - 我使用选项卡式活动创建了一个项目,然后将导航抽屉活动添加到项目中,那么我如何在启动时同时拥有这两者?
- prolog - 插入(我,[],[我,[],[]])。如何插入二叉树?