未分配功能参数

时间:2019-06-14 20:38:47

标签: powershell powershell-remoting

调用包装停止IIS应用程序池的函数。为什么Stop-WebAppPool的'Name'参数有问题?我唯一能看到的是它在脚本块中吗?

错误:

  

无法验证参数“名称”上的参数。参数为空。   为参数提供有效值,然后尝试运行   再次命令。

function StopAppPool() {
    param( 
        [string] $siteName = "",
        [string] $serverName = ""
    );


    $session = New-PSSession -ComputerName $serverName
    Invoke-Command -ComputerName $serverName -ScriptBlock { Stop-WebAppPool -Name $siteName }   

}

# -- entry here
StopAppPool -siteName "my.test-server.web" -serverName "DEV-MYTEST1"

1 个答案:

答案 0 :(得分:1)

Name为空,因为您不能直接在脚本块内部引用变量。使用Invoke-Command,必须将$siteName作为参数传递到脚本块中,并将其作为参数接收到脚本块中。像这样:

...

Invoke-Command -ComputerName $serverName -ArgumentList $siteName -ScriptBlock {
    Param($siteName)
    Stop-WebAppPool -Name $siteName
    }   

...