从文本文件启动远程机器上的服务

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】:

很抱歉造成混乱。我的解决方案确实有效,但错误并不代表实际问题。我的文件包含按行分隔并使用正确名称的计算机名称。问题是,如果一台机器因为关闭或不在办公室而不在网络上,那么它会返回我在原始帖子中所述的错误。我没有注意到某些机器肯定已经关闭或不在办公室。感谢大家为解决问题所做的努力,并为浪费您的时间而道歉。

【讨论】:

以上是关于从文本文件启动远程机器上的服务的主要内容,如果未能解决你的问题,请参考以下文章

我如何从网络托管机器人上的不和谐聊天中读取 txt 文件中的原始文本

从 Web 服务器上的文本文件中读取文本 [重复]

访问远程机器上的文件

从 iOS 应用程序服务器上的文本文件中搜索一系列经纬度

从文本文件javascript中调用数据[重复]

如何从远程机器上的 jar 文件运行测试?