[英]Get service status from remote server using powershell
如何获取需要用户名和密码才能登录的远程计算机的服务状态?
我正在尝试使用以下代码找到解决方案:
$serviceStatus = get-service -ComputerName $machineName -Name $service
get-service
命令的默认语法是:
Parameter Set: Default
Get-Service [[-Name] <String[]> ] [-ComputerName <String[]> ] [-DependentServices] [-Exclude <String[]> ] [-Include <String[]> ] [-RequiredServices] [ <CommonParameters>]
Parameter Set: DisplayName
Get-Service -DisplayName <String[]> [-ComputerName <String[]> ] [-DependentServices] [-Exclude <String[]> ] [-Include <String[]> ] [-RequiredServices] [ <CommonParameters>]
Parameter Set: InputObject
Get-Service [-ComputerName <String[]> ] [-DependentServices] [-Exclude <String[]> ] [-Include <String[]> ] [-InputObject <ServiceController[]> ] [-RequiredServices] [ <CommonParameters>]
这没有用户名和密码选项。
这也有效:
net use \\server\c$ $password /USER:$username
$service = Get-Service $serviceName -ComputerName $server
请注意,密码不应位于安全字符串中。
Invoke-Command
可以做到这一点。
$Cred = Get-Credential -Credential "<your domain user here>"
$ScriptBlock = {
param($Service)
Get-Service -Name "$Service"
}
$ServiceStatus = Invoke-Command -ComputerName $MachineName -Credential $Cred -ScriptBlock $ScriptBlock -ArgumentList "$Service"
请注意,为了将变量$Service
传递给脚本块中的Get-Service
cmdlet,您必须事先声明脚本块并在param
块中定义$Service
变量。 然后,您可以通过-ArgumentList
参数将$Service
参数传递到脚本块中。
通过为-ComputerName
参数提供逗号分隔的计算机列表, Invoke-Command
还支持在多个服务器上运行。
就像 Morton 的回答一样,但使用 New-PSDrive 进行共享并删除共享以进行整理。
New-PSDrive -Name tempDriveName –PSProvider FileSystem –Root “\\server\c$” -Credential $Cred
$service = Get-Service -Name $serviceName -ComputerName $MachineName
Remove-PSDrive -Name tempDriveName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.