将Get-WebAppPoolState返回值分配给Powershell中的变量

将Get-WebAppPoolState返回值分配给Powershell中的变量,powershell,Powershell,此代码: 导入模块WebAdministration 获取WebAppPoolState AppPoolName 生成以下输出: 价值观 -- 停止 但是这个代码: 导入模块WebAdministration $state=Get WebAppPoolState AppPoolName 写入主机$state 生成此输出: Microsoft.IIs.PowerShell.Framework.CodeProperty 当我使用get-WebAppPoolState获取应用程序池的状态时,我需要某种

此代码:

导入模块WebAdministration

获取WebAppPoolState AppPoolName

生成以下输出:

价值观 --
停止

但是这个代码:

导入模块WebAdministration

$state=Get WebAppPoolState AppPoolName

写入主机$state

生成此输出:

Microsoft.IIs.PowerShell.Framework.CodeProperty

当我使用get-WebAppPoolState获取应用程序池的状态时,我需要某种类型的布尔值来分配给变量,以便我可以在条件语句中使用它

我无法使用Microsoft.IIs.PowerShell.Framework.Code属性行


如何更正此问题?

未经测试,但这是否更有效

$state = $(Get-WebAppPoolState AppPoolName) 

Get-WebAppPoolState返回的不是字符串,而是CodeProperty类型的对象。您需要该对象的Value属性,即:

$state = (Get-WebAppPoolState AppPoolName).Value;

我假设在第一种情况下,当某个显示转换器写入到输出时,它正在启动,这就是为什么会显示Stopped,但不会用于写入主机,因此您会得到默认的对象表示形式(即类型名称)相反。

另一种方法是将cmdlet与
ExpandProperty
一起使用,从对象中获取一个或多个属性的值

$pool = "app-pool-name"
$state = Get-WebAppPoolState $pool | Select -ExpandProperty Value
Write-Host $state

感谢您的回复,但不幸的是,没有,它给出了相同的输出。非常感谢。这很有道理。问题解决了!有最终的解决方案吗?然后标出答案。