Powershell Get-WebsiteState 使用变量作为名称输入

Powershell Get-WebsiteState using variable as Name input

我正在编写一个 powershell 脚本来获取某些 IIS 站点的状态,它使用字符串作为名称时效果很好:

$service = (Invoke-Command -ComputerName $ComputerName  {Import-Module WebAdministration; Get-WebsiteState -Name "DefaultWebsite"}).value

然而,当我尝试在名称中传递一个变量时,它不再有效,而是 returns 我服务器上所有 IIS 站点的状态

$service = (Invoke-Command -ComputerName $ComputerName  {Import-Module WebAdministration; Get-WebsiteState -Name "$serv"}).value

我似乎没有尝试解决这个问题 - 任何建议将不胜感激!

您需要将 $serv 参数传递给脚本块:

$service = (
    Invoke-Command -ComputerName $ComputerName {
       param ($serv)
       Import-Module WebAdministration
       Get-WebsiteState -Name $serv
    } -ArgumentList $serv
).value

正如 mklement0 评论的那样,您还可以在 PS3+:

中使用 using 范围
$service = (
    Invoke-Command -ComputerName $ComputerName {
       Import-Module WebAdministration
       Get-WebsiteState -Name $using:serv
    }
).value