使用powershell从远程服务器获取服务状态

使用powershell从远程服务器获取服务状态,powershell,service,remote-server,Powershell,Service,Remote Server,如何获取需要用户名和密码才能登录的远程计算机的服务状态 我正在尝试使用以下代码找到解决方案: $serviceStatus=获取服务-ComputerName$machineName-Name$service get service命令的默认语法为: Parameter Set: Default Get-Service [[-Name] <String[]> ] [-ComputerName <String[]> ] [-DependentServices] [-Excl

如何获取需要用户名和密码才能登录的远程计算机的服务状态

我正在尝试使用以下代码找到解决方案:

$serviceStatus=获取服务-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>]
参数集:默认值
获取服务[[-Name]][-ComputerName][DependentServices][Exclude][Include][RequiredServices][]
参数集:DisplayName
获取服务-DisplayName[-ComputerName][依赖服务][排除][包括][所需服务][]
参数集:InputObject
获取服务[-ComputerName][-DependentService][-Exclude][-Include][-InputObject][-RequiredServices][]

这没有用户名和密码选项。

据我所知,获取服务。但是,您可以通过以下方式完成:

$cred=获取凭证-凭证
获取WMIObject Win32_服务-计算机$computer-凭据$cred
评论后更新:

您可以将凭据作为securestring保存到文件中,然后重新加载它以手动创建凭据,而无需提示。请参阅信息。

这也适用于:

net use \\server\c$ $password /USER:$username
$service = Get-Service $serviceName -ComputerName $server

请注意,密码不应位于安全字符串中。

调用命令可以实现这一点

$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"
$Cred=获取凭证-凭证“”
$ScriptBlock={
参数(服务)
获取服务-名称“$Service”
}
$ServiceStatus=Invoke命令-ComputerName$MachineName-Credential$Cred-ScriptBlock$ScriptBlock-ArgumentList“$Service”
请注意,要将变量
$Service
传递到脚本块中的
Get Service
cmdlet,必须事先声明脚本块,并在
param
块中定义
$Service
变量。然后可以通过
-ArgumentList
参数将
$Service
参数传递到脚本块中


Invoke命令
还支持在多台服务器上运行,方法是为
-ComputerName
参数提供一个逗号分隔的计算机列表。

与Morton的答案一样,但使用新的PSDrive进行共享并删除共享以进行整理

New-PSDrive -Name tempDriveName –PSProvider FileSystem –Root “\\server\c$” -Credential $Cred
$service = Get-Service -Name $serviceName -ComputerName $MachineName 
Remove-PSDrive -Name tempDriveName

我在找更安静的东西。我希望在TaskScheduler中设置脚本,每10分钟提示一次每个服务器的密码是不合适的。:)是否有某种方法可以让我在命令本身中设置
domin\Username
password
。您是唯一知道这一点的人吗?为什么这不是关于试图管理运行Windows的远程计算机的所有人的首要答案?ArtOfWarfare::完全同意。花了几个小时研究这个。在远程机器上运行服务的其他方法(不同的协议?)。我不完全清楚这是怎么起作用的。有人能帮我填一下细节吗?ThxWow,我花了大约2天的时间试图找到一种在PowerShell中对远程计算机进行身份验证的方法,问题是,像这样进行身份验证有多安全?
New-PSDrive -Name tempDriveName –PSProvider FileSystem –Root “\\server\c$” -Credential $Cred
$service = Get-Service -Name $serviceName -ComputerName $MachineName 
Remove-PSDrive -Name tempDriveName