【问题标题】:Assign a Get-WebAppPoolState returned value to a variable in Powershell将 Get-WebAppPoolState 返回值分配给 Powershell 中的变量
【发布时间】:2011-07-01 15:31:39
【问题描述】:

这段代码:

导入模块网络管理

Get-WebAppPoolState AppPoolName

产生以下输出:

价值 - -
停了

但是这段代码:

导入模块 WebAdministration

$state = Get-WebAppPoolState AppPoolName

写主机 $state

产生这个输出:

Microsoft.IIs.PowerShell.Framework.CodeProperty

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

我无法使用 Microsoft.IIs.PowerShell.Framework.CodeProperty 行。

我该如何纠正这个问题?

【问题讨论】:

  • 任何最终解决方案?然后标记答案。

标签: powershell


【解决方案1】:

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

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

我认为某些显示转换器在第一种情况下会在它被写入输出时启动,这就是为什么会显示 Stopped 而不是写入主机的原因,因此您会获得默认的对象表示(即类型名称)。

【讨论】:

  • 非常感谢。这很有意义。问题解决了!
【解决方案2】:

未经过测试,但这样效果更好吗?

$state = $(Get-WebAppPoolState AppPoolName) 

【讨论】:

  • 感谢您的回复,但很遗憾没有,它给出了相同的输出。
【解决方案3】:

另一种方法是使用 Select-Object cmdlet 和 ExpandProperty 从对象中获取 1 个或多个属性的值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多