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

时间:2011-07-01 15:31:40

标签: powershell

此代码:

  

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行。

我该如何纠正?

3 个答案:

答案 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