Используйте выражение / свойство в условии - PullRequest
0 голосов
/ 06 марта 2020

Я хотел бы использовать определенное выражение / свойство в операторе if, а также перечислить определенный вывод. Я просто не знаю, как использовать их в дальнейшем.

$tools = Get-VM | select name, @{N=”ToolsStatus”; E={$_.Extensiondata.Summary.Guest.ToolsStatus}}

[string]$Output = ""
foreach ($vm in $vmtools){
$Output = $Output + "$($vm.name) ----- $($vm.ToolsVersion)`n"


}
if ("ToolsStatus" -eq "toolsOld") {
    Write-Output "CRITICAL, These VM's have out of date tools: `n $Output"
    $Status = 2 enter code here
  1. Как мне go использовать "ToolStatus" / E = {$ _. Extensiondata.Summary.Guest .ToolsStatus}} в моем операторе if?
  2. Я знаю, что могу использовать $ vm.name для перечисления имен, но, скажем, я хотел получить вывод из @ {N = ”ToolsStatus”; E = {$ _. Extensiondata.Summary.Guest.ToolsStatus}}, а также?

1 Ответ

1 голос
/ 06 марта 2020

$tools здесь будет содержать коллекцию объектов VM со свойствами Name и ToolStatus. $tools.ToolStatus возвращает значение всех ToolStatus свойств для каждого объекта в $tools. Для сравнения одного значения с набором значений можно использовать оператор -contains или -in.

# Checking if any ToolStatus is toolsOld
if ($tools.ToolStatus -contains 'toolsOld') {
    # Any number of VMs has a toolstatus of toolsOld
}

# Return the VM objects(s) that contain(s) toolStatus value of toolsOld
$tools | Where ToolStatus -eq 'toolsOld'

# Check Individual VMs for ToolStatus
foreach ($tool in $tools) {
    if ($tool.ToolStatus -eq 'toolsOld') {
        Write-Output "$($tool.Name) has a tool status of toolsOld"
    }
}

# List ToolStatus Value for VM Name MyServer
$tools | Where Name -eq 'MyServer' | Select -Expand ToolStatus
($tools | Where Name -eq 'MyServer').ToolStatus
$tools.where({$_.Name -eq 'MyServer'}).ToolStatus

# List ToolStatus for all VMs
$tools.ToolStatus

При использовании Select-Object вы создаете пользовательский объект со свойствами что вы выбрали. ToolStatus здесь рассчитывается свойство. Несмотря на то, что синтаксис для создания свойства отличается от простого ввода имени свойства, вы все равно получаете его значение так же, как и любое другое свойство вашего объекта. Проще всего использовать оператор доступа к элементу . в синтаксисе object.property.

...