【问题标题】:Split Strings in a Value column with Powercli使用 Powercli 在值列中拆分字符串
【发布时间】:2019-05-07 20:07:00
【问题描述】:

这是我为使用 powercli 获得输出而写的;

Get-VM -name SERVERX | Get-Annotation -CustomAttribute "Last EMC vProxy Backup"|select @{N='VM';E={$_.AnnotatedEntity}},Value

这是输出

VM       Value                                                                                                                                                                                
--       -----                                                                                                                                                                                
SERVERX  Backup Server=networker01, Policy=vmbackup, Workflow=Linux_Test_Production, Action=Linux_Test_Production, JobId=1039978, StartTime=2018-10-31T00:00:27Z, EndTime=2018-10-31T00:12:45Z
SERVERX1 Backup Server=networker01, Policy=vmbackup, Workflow=Linux_Test_Production, Action=Linux_Test_Production, JobId=1226232, StartTime=2018-12-06T00:00:29Z, EndTime=2018-12-06T00:0...
SERVERX2 Backup Server=networker01, Policy=vmbackup, Workflow=Linux_Test_Production, Action=Linux_Test_Production, JobId=1226239, StartTime=2018-12-05T23:58:27Z, EndTime=2018-12-06T00:0...

但我只想检索“开始时间”和“结束时间”值

期望的输出是;

 VM       Value                                                                                                                                                                                
 --       -----      
 SERVERX  StartTime=2018-10-31T00:00:27Z, EndTime=2018-10-31T00:12:45Z
 SERVERX1 StartTime=2018-12-06T00:00:29Z, EndTime=2018-1206T00:11:14Z
 SERVERX2 StartTime=2018-12-05T23:58:27Z, EndTime=2018-12-06T00:11:20Z

我怎样才能得到这个输出?

【问题讨论】:

    标签: vmware powercli vmware-tools


    【解决方案1】:

    这将更适合 Powershell 论坛,因为这只是数据操作。

    提供你的输出总是相同数量的逗号然后

    $myannotation = Get-VM -name SERVERX | Get-Annotation -CustomAttribute "Last EMC 
    vProxy Backup"|select @{N='VM';E={$_.AnnotatedEntity}},Value
    $table1 = @()
    foreach($a in $myannotation)
        $splitter = $a.value -split ','
        $splitbackupstart = $splitter[5]
        $splitbackupend = $splitter[6]
        $row = '' | select vmname, backupstart, backupend
        $row.vmname = $a.AnnotatedEntity # or .vm would have to try
        $row.backupstart = $splitbackupstart 
        $row.backupend= $splitbackupend 
        $table1 += $row
    }
    $table1
    

    未经测试。如果字符串的格式会随着时间而改变,那么搜索 starttime 的正则表达式会更好。

    【讨论】:

    • 无法显示虚拟机名称。
    猜你喜欢
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多