Powershell调用命令失败,在本地有效

时间:2018-10-24 07:30:45

标签: powershell

我想从另一台服务器获取有关IIS应用程序池的信息。

使用Invoke-Command应该可以做到。但是有一个奇怪的行为。

我想通过此命令获取的部分信息:

$s = "chvmes01"
$command = {Get-ItemProperty IIS:\AppPools\DefaultAppPool | Select *}
$General = Invoke-Command -ComputerName $s -ScriptBlock $command

但这给了我以下错误:

  

找不到驱动器。名称为“ IIS”的驱动器不存在。

当我在本地计算机上执行此命令时,它的工作正常。为什么? 编辑: 解决方案是将Import-Module WebAdministration添加到命令Variable中,现在它可以正常工作了。

我想通过以下命令获取信息的第二部分:

$b = Invoke-Command -ComputerName $s -ScriptBlock {(Get-WebConfiguration "$appPoolPath/cpu/@limit").Value}
$a = Invoke-Command -ComputerName $s -ScriptBlock {Get-WebConfiguration "$appPoolPath/cpu/@action"}

在这里,我没有任何信息,也没有失败!此命令与此相同:当我在本地计算机上执行它时,它可以工作。

我是否误解了Invoke-Command?

最诚挚的问候

1 个答案:

答案 0 :(得分:2)

问题的第一部分。确保在远程计算机上安装了WebAdministration moduleIIS:\提供了WebAdministration module驱动器,因此您需要先安装/导入该模块。

问题的第二部分。您需要为arguments传递ScriptBlock,否则远程计算机将不知道变量值。

$b = Invoke-Command -ComputerName $s -ScriptBlock {param($appPoolPath)(Get-WebConfiguration "$appPoolPath/cpu/@limit").Value} -ArgumentList $appPoolPath
$a = Invoke-Command -ComputerName $s -ScriptBlock {param($appPoolPath) Get-WebConfiguration "$appPoolPath/cpu/@action"} -ArgumentList $appPoolPath