无法使用Powershell从远程服务器获取IIS状态

时间:2018-08-10 09:48:19

标签: powershell

我正在尝试使用Powershell从远程服务器获取IIS状态。 我已经使用命令Get-Service,但是我没有从该命令接收任何输出。 下面是我的代码块。

$pass='pass'|ConvertTo-SecureString -AsPlainText -Force;
$Credentials =  New-Object   
System.Management.Automation.PsCredential("user",$pass);
$Service=invoke-command -computername "server" -credential $Credentials - 
scriptblock {Get-Service|Where-Object Name -eq 'IISADMIN'}
if($Service.Status -eq 'Running')
{
write-host "IIS Running"
}
else
{
 throw "IIS not running or Not installed"

}

2 个答案:

答案 0 :(得分:0)

我检查了您的代码,但没有发现任何问题,您是否使用Get-Service或服务管理器检查了该服务是否在本地存在?

无论如何,您都不必使用Invoke-Command,您可以使用-ComputerName cmdlet的内置Get-Service参数,

如果需要提供凭据,则可以使用WMI:

$Credential = New-Object System.Management.Automation.PsCredential($username, $encrypted)
$Service = Get-WmiObject -Class win32_service -ComputerName Server -Filter 'Name = "W3SVC"' -Credential $Credentials

答案 1 :(得分:0)

尝试使用WMI调用,我发现使用远程服务器时它更加可靠。

$ Service = Get-WmiObject-计算机名$ computer-凭据$ credentials Win32_service -ErrorAction继续|其中{$ _。Name -eq'IISADMIN'}