我正在尝试使用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"
}
答案 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'}