解析变量 Powershell
Parsing Variable Powershell
我有一个简单的脚本,我想向我展示一些结果,但以虚拟机的名义,我只想要第一点,其他的都剩下了,因为它会产生很多噪音。
$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 :
尝试在您的 Select-Object
中执行此操作,您目前 return 仅 $_.PartialPath
作为 VM 名称:
$_.PartialPath.Split('.')[0]
这应该将 .
字符上的 PartialPath
属性 的内容拆分为一个字符串数组,然后 return 你是第一个。
请注意,如果 PartialPath
包含没有 .
的字符串,您可能会出错,因为拆分不会生成数组,并且 [0]
的使用将无效。
.PartialPath
属性 是一个 Veeam.Backup.Common.CPartialPath
对象。表格输出正在执行一些字符串转换魔术,但底层对象是 不是字符串 。然而,Veeam.Backup.Common.CPartialPath
有一个 ToString()
重写方法,可以使这个任务更容易。
Select @{Name="Nombre de la VM"; Expression={$_.PartialPath.ToString().Split('.')[0]}}
我有一个简单的脚本,我想向我展示一些结果,但以虚拟机的名义,我只想要第一点,其他的都剩下了,因为它会产生很多噪音。
$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 :
尝试在您的 Select-Object
中执行此操作,您目前 return 仅 $_.PartialPath
作为 VM 名称:
$_.PartialPath.Split('.')[0]
这应该将 .
字符上的 PartialPath
属性 的内容拆分为一个字符串数组,然后 return 你是第一个。
请注意,如果 PartialPath
包含没有 .
的字符串,您可能会出错,因为拆分不会生成数组,并且 [0]
的使用将无效。
.PartialPath
属性 是一个 Veeam.Backup.Common.CPartialPath
对象。表格输出正在执行一些字符串转换魔术,但底层对象是 不是字符串 。然而,Veeam.Backup.Common.CPartialPath
有一个 ToString()
重写方法,可以使这个任务更容易。
Select @{Name="Nombre de la VM"; Expression={$_.PartialPath.ToString().Split('.')[0]}}