从文本文件启动远程机器上的服务
Posted
技术标签:
【中文标题】从文本文件启动远程机器上的服务【英文标题】:Starting a service on remote machines from a text file 【发布时间】:2020-06-27 20:31:10 【问题描述】:我遇到了一个问题,我制作了一个包含设置服务所需的所有机器的文本文件。它看起来如下:
$computernames= Get-Content ".\temp\ComputerNames.txt"
foreach ($name in $computernames)
Get-Service -Name 'Remote Registry' -ComputerName $name | Set-Service -Status Running -StartupType Automatic -WhatIf
如果我给它提供机器的名称,主要的 Get-service 行可以正常工作。但是,使用此变量 $name 我无法使命令正常工作。它一直给我以下错误:
Get-Service : Cannot find any service with service name 'Remote Registry'.
At line:8 char:5
+ Get-Service -Name 'Remote Registry' -ComputerName $name | Set-Ser ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Remote Registry:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
感谢任何建议。
【问题讨论】:
将-ComputerName $name
也添加到Set-Service
:)
@MathiasR.Jessen 我刚刚试了一下。它似乎没有帮助。在单个机器上执行此命令时我可以很好地执行此命令,但是当尝试从我的文本文件中定位机器时,它会给我一个错误,指出找不到该服务。
您是否确认文本文件系统名称是准确的,并且它们没有前导/尾随非打印字符或空白字符?
请向我们展示 ComputerNames.txt 文件的前两行或三行。看起来这不是每个计算机名都在单独的行上的文件,或者它可能是带有标题的 CSV 文件
手动测试它——你的错误不是连接到远程机器的问题,它告诉你它没有在远程机器上找到名为“远程注册表”的服务。手动对有问题的机器运行命令,并确认上面有一个具有该名称的服务(假设它是 windows,应该有)
【参考方案1】:
很抱歉造成混乱。我的解决方案确实有效,但错误并不代表实际问题。我的文件包含按行分隔并使用正确名称的计算机名称。问题是,如果一台机器因为关闭或不在办公室而不在网络上,那么它会返回我在原始帖子中所述的错误。我没有注意到某些机器肯定已经关闭或不在办公室。感谢大家为解决问题所做的努力,并为浪费您的时间而道歉。
【讨论】:
以上是关于从文本文件启动远程机器上的服务的主要内容,如果未能解决你的问题,请参考以下文章