Azure PowerShell return CustomScriptExtension 的名称(如果存在)
Azure PowerShell return the Name of CustomScriptExtension if it exists
我创建了一个名为 $VMStatus
的变量
$VMStatus = Get-AzureRmVM -ResourceGroupName $RGName -VMName $VMName -status
现在当我 运行 $VMStatus.Extensions.Type
时,它 return 是所提供条目的虚拟机扩展列表。
所以现在当我 运行 $VMStatus.Extensions.Type -Match "Custom"
时,它 return 是我感兴趣的条目:Microsoft.Compute.CustomScriptExtension
我遇到的问题是获取 CustomScriptExtension
的 Name
。我尝试了以下但没有成功:
IF ($VMstatus.Extensions.Type -Match "Custom") {$VMstatus.Extensions.Name}
这实际上 return Name
的所有条目,因为 IF
语句的第一部分是 TRUE
。
如何 return 仅 CustomrScriptExtension
的 Name
(如果存在)?
您可以尝试使用以下脚本。
##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
}
感谢@shengbao-shui-msft提供以上答案。
我采纳了他的建议并将其修改为首先查找 CustomScriptExtension,如果存在则将其移除,然后再继续运行手册
$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 . "
}
我创建了一个名为 $VMStatus
$VMStatus = Get-AzureRmVM -ResourceGroupName $RGName -VMName $VMName -status
现在当我 运行 $VMStatus.Extensions.Type
时,它 return 是所提供条目的虚拟机扩展列表。
所以现在当我 运行 $VMStatus.Extensions.Type -Match "Custom"
时,它 return 是我感兴趣的条目:Microsoft.Compute.CustomScriptExtension
我遇到的问题是获取 CustomScriptExtension
的 Name
。我尝试了以下但没有成功:
IF ($VMstatus.Extensions.Type -Match "Custom") {$VMstatus.Extensions.Name}
这实际上 return Name
的所有条目,因为 IF
语句的第一部分是 TRUE
。
如何 return 仅 CustomrScriptExtension
的 Name
(如果存在)?
您可以尝试使用以下脚本。
##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
}
感谢@shengbao-shui-msft提供以上答案。 我采纳了他的建议并将其修改为首先查找 CustomScriptExtension,如果存在则将其移除,然后再继续运行手册
$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 . "
}