我已经整理了以下脚本。我想要做的是,如果VM名称类似于 DC 或 SQL ,则将标记设置为$ false,或者如果是其他任何内容,则将标记设置为$ true。
如果我取出If的状态,它工作正常,但它将DC和SQL标记设置为$ true,我想如果我放入If ($vm.name -like *dc*)
我可以将标记设置为$ false,对于SQL也是如此
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string]$RG
)
$rgs = Get-AzureRmResourceGroup | Where-Object {$_.ResourceGroupName -like "*$rg*"}
foreach ($rg in $rgs)
{
$vms = Get-AzureRmVm -ResourceGroupName $rg.ResourceGroupName
foreach ($vm in $vms)
{
if ($vm.Name -like *dc*)
{
$tags = $_.Tags
$tags['ShutdownSchedule_AllowStop'] = "$False";
Set-AzureRmResource -ResourceId $_.Id -Tag $tags -Force -Verbose
}
Elseif ($vm.Name -like *SQL*)
{
$tags = $_.Tags
$tags['ShutdownSchedule_AllowStop'] = "$False";
Set-AzureRmResource -ResourceId $_.Id -Tag $tags -Force -Verbose
}
Else
{
$tags = $_.Tags
$tags['ShutdownSchedule_AllowStop'] = "$True";
Set-AzureRmResource -ResourceId $_.Id -Tag $tags -Force -Verbose
}
}
}
有效的脚本在
下面[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string]$RG
)
$start = Get-Date
$rgs = Get-AzureRmResourceGroup | Where-Object {$_.ResourceGroupName -like "*$rg*"}
foreach ($rg in $rgs)
{
$vms = Get-AzureRmVm -ResourceGroupName $rg.ResourceGroupName
$vms.ForEach({
$tags = $_.Tags
$tags['ShutdownSchedule_AllowStop'] = "$True";
Set-AzureRmResource -ResourceId $_.Id -Tag $tags -Force -Verbose
})
}
我得到的错误是if ($vm.Name -like *dc*)
错误是“你必须在*运算符之后提供值表达式”对于SQL来说是相同的。
还有一个错误(这让我很困惑)
}
}
最后两行在表达式或语句“
”中出现“Unexpected token'}'错误任何帮助请在我崩溃谷歌之前?
谢谢:)