此代码:
import-module WebAdministration
Get-WebAppPoolState AppPoolName
产生以下输出:
值 - -
停了
但是这段代码:
import-module WebAdministration
$ state = Get-WebAppPoolState AppPoolName
WRITE-HOST $ state
生成此输出:
Microsoft.IIs.PowerShell.Framework.CodeProperty
当我使用Get-WebAppPoolState获取应用程序池的状态时,我需要一些布尔值来分配给变量,以便我可以在条件语句中使用它。
我无法使用Microsoft.IIs.PowerShell.Framework.CodeProperty行。
我该如何纠正?
答案 0 :(得分:16)
Get-WebAppPoolState不返回字符串,而是返回CodeProperty类型的对象。您将需要该对象的Value属性,即:
$state = (Get-WebAppPoolState AppPoolName).Value;
我认为某些显示转换器在第一种情况下会被写入输出,这就是为什么显示Stopped而不是写入主机的原因所以你得到了默认的对象表示(这是类型名称)。
答案 1 :(得分:0)
未经测试,但这项工作更好吗?
$state = $(Get-WebAppPoolState AppPoolName)
答案 2 :(得分:0)
另一种方法是将Select-Object cmdlet与ExpandProperty
一起使用,以从对象中获取1个或多个属性的值。
$pool = "app-pool-name"
$state = Get-WebAppPoolState $pool | Select -ExpandProperty Value
Write-Host $state