我想从另一台服务器获取有关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?
最诚挚的问候
答案 0 :(得分:2)
问题的第一部分。确保在远程计算机上安装了WebAdministration module
。
IIS:\
提供了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