Get-VM 不显示结果
Get-VM without showing results
我想 运行 测试一下虚拟机是否已经存在于 hyper-v
这是我的资料:
$VM = "DC"
$VMName = Get-VM -name $VM
if (!$VMname) {
Write-Host "No VM named $VM exists" }
else
{ Write-Host "A VM named $VM already exists" }
但是,如果 VM 不存在,则会抛出此错误
PS C:\Users\sowen> $VMName = Get-VM -name $VM
Get-VM : A parameter is invalid. Hyper-V was unable to find a virtual machine with name DC.
At line:1 char:11
+ $VMName = Get-VM -name $VM
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (DC:String) [Get-VM], VirtualizationInvalidArgumentException
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVMCommand
How could I silently find if a VM already exists on HyperV with powershell?
根据 TechNet Get-VM 支持通用参数。使用 -ErrorAction SilentlyContinue
可能是完成同样事情的更简洁的方法
$VMName = Get-VM -name $VM -ErrorAction SilentlyContinue
或者只是一个简单的 try/catch 也可以达到目的。我只会使用上面的代码和一个简单的 If($VMName){}
来解释空值 return。
我想 运行 测试一下虚拟机是否已经存在于 hyper-v
这是我的资料:
$VM = "DC"
$VMName = Get-VM -name $VM
if (!$VMname) {
Write-Host "No VM named $VM exists" }
else
{ Write-Host "A VM named $VM already exists" }
但是,如果 VM 不存在,则会抛出此错误
PS C:\Users\sowen> $VMName = Get-VM -name $VM
Get-VM : A parameter is invalid. Hyper-V was unable to find a virtual machine with name DC.
At line:1 char:11
+ $VMName = Get-VM -name $VM
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (DC:String) [Get-VM], VirtualizationInvalidArgumentException
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVMCommand
How could I silently find if a VM already exists on HyperV with powershell?
根据 TechNet Get-VM 支持通用参数。使用 -ErrorAction SilentlyContinue
可能是完成同样事情的更简洁的方法
$VMName = Get-VM -name $VM -ErrorAction SilentlyContinue
或者只是一个简单的 try/catch 也可以达到目的。我只会使用上面的代码和一个简单的 If($VMName){}
来解释空值 return。