【问题标题】:Parsing Variable Powershell解析变量 Powershell
【发布时间】:2020-06-05 20:42:13
【问题描述】:

我有一个简单的脚本,我想给我看一些结果,但是以虚拟机的名义,我只想到第一点,其他的都剩下了,因为它会产生很多噪音。

$today = (get-date).Date
$backup = Get-VBRBackup | where {$_.info.jobname -eq "A. ProduccionInterna.Infraestructura Backup Copy"}
if ($backup) {
$backup.GetAllStorages() | where {$_.CreationTime.Date -eq $today} | select @{Name="Nombre de la VM"; Expression={$_.PartialPath[0]}}, @{Name="Size VM"; Expression={$_.Stats.BackupSize/1GB}} , @{Name="Deduplicacion"; Expression={$Session.BackupStats.DedupRatio/10}} , @{Name="Compress Ratio"; Expression={$Session.BackupStats.CompressRatio/10}} , @{Name="Fecha"; Expression={(get-date).Date}}
}

结果:

 f5downinxn.vm-37087D2020-02-21T030000_B816.vib

但是,我不会:

 f5downinxn

输入的链似乎不起作用。

[0]

我也试过

(".")[1]

编辑

使用我的代码:

Nombre de la VM : f5downinxn.vm-37087D2020-02-21T030000_B816.vib

有变化:

代码

$today = (get-date).Date
$backup = Get-VBRBackup | where {$_.info.jobname -eq "A. ProduccionInterna.Infraestructura Backup Copy"}
 if ($backup) {
$backup.GetAllStorages() | where {$_.CreationTime.Date -eq $today} | select @{Name="Nombre de la VM"; Expression={$_.PartialPath[0].split('.')[0]}}, @{Name="Size VM"; Expression={$_.Stats.BackupSize/1GB}} , @{Name="Deduplicacion"; Expression={$Session.BackupStats.DedupRatio/10}} , @{Name="Compress Ratio"; Expression={$Session.BackupStats.CompressRatio/10}} , @{Name="Fecha"; Expression={(get-date).Date}} 
}


Nombre de la VM : 

【问题讨论】:

    标签: powershell powershell-4.0


    【解决方案1】:

    .PartialPath 属性是一个Veeam.Backup.Common.CPartialPath 对象。表格输出正在执行一些字符串转换魔术,但底层对象是不是字符串。但是,Veeam.Backup.Common.CPartialPath 有一个 ToString() 覆盖方法,它应该使这项任务更容易。

    Select @{Name="Nombre de la VM"; Expression={$_.PartialPath.ToString().Split('.')[0]}}
    

    【讨论】:

    • 感谢您的帮助和解释,因为它帮助我理解了它的工作原理!
    【解决方案2】:

    尝试在您的 Select-Object 中执行此操作,您当前只返回 $_.PartialPath 作为 VM 名称:

    $_.PartialPath.Split('.')[0]
    

    这应该将. 字符上的PartialPath 属性的内容拆分为字符串数组,然后返回第一个字符串。

    请注意,如果PartialPath 曾经包含一个没有. 的字符串,您可能会遇到错误,因为拆分不会生成数组,并且[0] 的使用将无效。

    【讨论】:

    • 请编辑您的问题,向我们展示您所做的更改。
    • 好的,我做了修改
    • 我真的想看看你更新的脚本。但也许我们错误地认为您已将[0] 添加到此,而$_.PartialPath[0] 不起作用。在这种情况下,试试这个$_.PartialPath[0].split('.')[0]
    • 谢谢。当您实际获得返回的 VM 名称时,我仍然对您正在执行的操作感到有些困惑。是不是您放在问题顶部的代码?
    • 也就是说,首先我用我的问题代码展示名称如何显示我,然后在你的帮助下修改我的代码时显示它显示的内容。
    猜你喜欢
    • 2019-04-06
    • 2019-07-30
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多