Как связать данные 2 expandproperty друг с другом

В моем сценарии я использую expandproperty3 раза, чтобы получить правильные данные. В первом свойстве расширения я также должен использовать данные. Но я не могу добавить это в строку выбора.

В -expandproperty значение, которое я должен использовать computerbalance И в -expandproperty -secureemployer Я должен использовать employeenumber.

Это мой сценарий:

Invoke-RestMethod -Uri $Url_budgetid -Method Get -Headers $header_process | Select-Object -ExpandProperty value | Select employee | Select-Object -ExpandProperty Employee | Select-Object -ExpandProperty SecureEmployee 

Я надеюсь, что вы можете мне помочь.

1 ответ

Вы можете использовать .dotPropertyспособ использования свойств объектов. Вы можете накапливать только интересующие вас свойства в один объект, используя[PSCustomObject]@{Key1=Value1;Key2=Value2;...} путь.

Вот пример данных и пример их упрощения до списка объектов.

$data = @'
[    {
        computer: {balance : 180, name: "Computer1"},
        employee: {displayName: "Juan Carlos Rodrigez", employeeNumber: "Emp123", telephone: "+1234567890"}
    },
    {
        computer: {balance : 220, name: "Computer2"},
        employee: {displayName: "Natalia Marisa Oreiro", employeeNumber: "Emp456", telephone: "+987654321" }
    },
    {
        computer: {balance : 90, name: "Computer3"},
        employee: {displayName: "Don Pedro", employeeNumber: "Emp000", telephone: "+77777777777" }
    }
]
'@ | ConvertFrom-Json
    
$warningLine = 200
$dataSimplified = $data | 
    ForEach-Object { return [PSCustomObject]@{ 
        ComputerBalance = [Int]::Parse($_.computer.balance);  # we can use values 'As Is'
        EmployeeNumber = $_.employee.employeeNumber.ToUpper(); # We can translate or modify falues
        FirstName = $_.employee.displayName.Split(' ')[0]; # We can use them partially
        ShouldWarnLowBalance = $_.computer.balance -le $warningLine } # We can create new properties based on what we whant
        } |
    Where-Object { $_.ShouldWarnLowBalance -eq $true } # We can right then filter output depending on our generated values
        
#> $dataSimplified
#
#ComputerBalance EmployeeNumber FirstName ShouldWarnLowBalance
#--------------- -------------- --------- --------------------
#            180 EMP123         Juan                      True
#             90 EMP000         Don                       True

Я использую powershell более 5 лет и ни разу не использовал -ExpandProperty синтаксис.

Другие вопросы по тегам