powershell - 循环到脚本

标签 powershell

我在使用循环向对象添加内容时遇到问题。

这部分有效:

# Get Backup Jobs
$jobs = Get-VBRJob | ?{$_.JobType -eq "Backup"}
foreach ($job in $jobs) {
$jobOptions = New-Object PSObject
$jobOptions | Add-Member -MemberType NoteProperty -Name "JobName" -value $job.name
$jobOptions | Add-Member -MemberType NoteProperty -Name "Enabled" -value $job.isscheduleenabled

输出:

Jobname,Enabled,...    
Job1,True,...

我想要的是:

VMName,Jobname,Enabled

VM1,Job1,True,...

VM2,Job1,True,...

VM3,Job2,True,...

我尝试过:

# Get Backup Jobs
$jobs = Get-VBRJob | ?{$_.JobType -eq "Backup"}
foreach ($job in $jobs) {

$vmnames = ($job.GetObjectsInJob()).name
$jobOptions = New-Object PSObject
$jobOptions | Add-Member -MemberType NoteProperty -Name "VMName" -value 
$vmnames

$jobOptions | Add-Member -MemberType NoteProperty -Name "JobName" -value 
$job.name
$jobOptions | Add-Member -MemberType NoteProperty -Name "Enabled" -value   
$job.isscheduleenabled

这会创建:

VMName,Jobname,Enabled

VM1 VM2,Job1,True,...

我需要改变什么?

最佳答案

您可以使用计算属性:

$jobs = Get-VBRJob | 
    Where-Object JobType -eq "Backup" |
    Select-Object @{l="VMName"; e={($_.GetObjectsInJob()).name}}, 
    @{l="JobName"; e={$_.name}}, 
    @{l="Enabled"; e={$_.isscheduleenabled}}

注意:我假设 $job.GetObjectsInJob().name 返回 VMName。

关于powershell - 循环到脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43386285/

相关文章:

powershell - 依赖和并行执行

powershell - 在 Powershell 脚本中运行 7-Zip

powershell - 在 PowerShell 中结合 `Get-Disk` 信息和 `LogicalDisk` 信息?

powershell - 如何使用Powershell获取路径段进行重命名

powershell - 针对多个服务器运行脚本,但结果乱序

powershell - Invoke-WebRequest - 属性显示为具有值,但以某种方式访问​​时为空

powershell - powershell-创建动态打印机脚本-输出和命令结构

powershell - 使用 powershell 处理字符串中的变量

powershell - 用Powershell打开端口

c# - 服务仅在调试时工作