如何通过powercli检索VM的名称和路径

时间:2015-06-22 11:00:44

标签: powershell

使用以下脚本检索VM的 NAME和PATH ,并在 PATH 中获取我不想要的全长路径,我只需要在输出

中的资源之后显示的路径

这是我的代码:

 function Get-Path{
        param($Object)

        $path = $object.Name
        $parent = Get-View $Object.ExtensionData.ResourcePool
        while($parent){
            $path = $parent.Name + "/" + $path
            if($parent.Parent){
                $parent = Get-View $parent.Parent
            }
            else{$parent = $null}
        }
        $path
    }

    Get-VM | Select Name,
        @{N="Path";E={Get-Path -Object $_}}
  

输出:

名称:

AWServer 3.1
CCW%.1.1_DEMO
DEMO-EA
MUSE_DEMO
UV_CARDIO
UView-Web_Cardio-2015-v2

路径:

> ha-folder-root/ha-datacenter/host/tempcardio.centricity.info/Resources/vbnrt735w6%5c/sdfasd34564/AWServer
> 3.1  ha-folder-root/ha-datacenter/host/tempcardio.centricity.info/Resources/CCW5.1.1_DEMO
> ha-folder-root/ha-datacenter/host/tempcardio.centricity.info/Resources/4564/DEMO-EA
> ha-folder-root/ha-datacenter/host/tempcardio.centricity.info/Resources/vbnrt735w6%5c/MUSE_DEMO
> ha-folder-root/ha-datacenter/host/tempcardio.centricity.info/Resources/asd/UV_CARDIO
> ha-folder-root/ha-datacenter/host/tempcardio.centricity.info/Resources/UView-Web_Cardio_2015_v2

1 个答案:

答案 0 :(得分:1)

如果文本面前并包含“资源”是多余的,那么使用简单的正则表达式我们可以在从函数输出之前替换它。

$path$path -replace "^.*?Resources/"

这样就可以替换函数内部的类似行(返回属性的位置)。我们从字符串一直到包括第一次出现的所有内容“Resources /".

另一种方法是编辑get-path的输出,该输出与函数名称一致

Get-VM | Select Name,
    @{N="Path";E={(Get-Path -Object $_) -replace "^.*?Resources/"`}}