Azure PowerShell返回CustomScriptExtension的名称(如果它存在)

时间:2018-03-23 14:24:04

标签: powershell azure azure-virtual-machine

我创建了一个名为$VMStatus

的变量
$VMStatus = Get-AzureRmVM -ResourceGroupName $RGName -VMName $VMName -status

现在,当我运行$VMStatus.Extensions.Type时,它会返回所提供条目的虚拟机扩展列表。

所以现在当我运行$VMStatus.Extensions.Type -Match "Custom"时,它会返回我感兴趣的条目:Microsoft.Compute.CustomScriptExtension

我遇到的问题是获得Name的{​​{1}}。我试过以下但没有成功:

CustomScriptExtension

这实际上会返回IF ($VMstatus.Extensions.Type -Match "Custom") {$VMstatus.Extensions.Name} 的所有条目,因为Name语句的第一部分是IF

如果只存在TRUE Name,我该怎么回事?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下脚本。

##If VirtualMachineExtensionType eq CustomScriptExtension, it means custom script extension install on your VM
$vm=Get-AzureRmVm -ResourceGroupName $RGName -Name $VMName |Where {$_.Extensions.VirtualMachineExtensionType -eq "CustomScriptExtension"}
if ($vm){

    $name = $vm.Extensions|Where {$_.VirtualMachineExtensionType -eq "CustomScriptExtension"} |select Name
    $name
}

答案 1 :(得分:0)

感谢@ shengbao-shui-msft提供上述答案。 我已经采纳了他的建议并将其修改为首先查找CustomScriptExtension,如果存在,则在继续执行Runbook之前将其删除

$VM = Get-AzureRMVM -ResourceGroupName $RGName -Name $VMName | Where-Object {$_.Extensions.VirtualMachineExtensionType -eq "CustomScriptExtension"}
IF ($vm) 
{
    $name = $vm.Extensions | Where-Object {$_.VirtualMachineExtensionType -eq "CustomScriptExtension"} | select-object -ExpandProperty Name
    write-host "Existing CustomScriptExtension found on $VMName as $name . Removing...."

    Remove-AzureRmVMCustomScriptExtension `
    -VMName $VMName `
    -ResourceGroupName $RGName `
    -Name $name
}
Else 
{
    write-host "There are no CustomScriptExtension found on $VMName . "
}
相关问题