在条件中使用 expression/property
Use expression/property in a condition
我想在 if 语句中使用某个 expression/property,并且还想列出某个输出。我根本不知道如何在脚本中进一步使用这些。
$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
- 如何在我的 if 语句中使用 "ToolStatus"/E={$_.Extensiondata.Summary.Guest.ToolsStatus}}?
- 我知道我可以使用 $vm.name 来列出名称,但假设我想获得 @{N=”ToolsStatus” 的输出;还有 E={$_.Extensiondata.Summary.Guest.ToolsStatus}}?
$tools
将包含一组具有属性 Name
和 ToolStatus
的 VM 对象。 $tools.ToolStatus
returns $tools
中每个对象的所有 ToolStatus
属性的值。要将单个值与一组值进行比较,您可以使用 -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
.
中使用成员访问运算符 .
是最简单的
我想在 if 语句中使用某个 expression/property,并且还想列出某个输出。我根本不知道如何在脚本中进一步使用这些。
$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
- 如何在我的 if 语句中使用 "ToolStatus"/E={$_.Extensiondata.Summary.Guest.ToolsStatus}}?
- 我知道我可以使用 $vm.name 来列出名称,但假设我想获得 @{N=”ToolsStatus” 的输出;还有 E={$_.Extensiondata.Summary.Guest.ToolsStatus}}?
$tools
将包含一组具有属性 Name
和 ToolStatus
的 VM 对象。 $tools.ToolStatus
returns $tools
中每个对象的所有 ToolStatus
属性的值。要将单个值与一组值进行比较,您可以使用 -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
.
.
是最简单的