2016-08-15 56 views
0

这是我的第一篇文章,我一直是各种帖子的很长时间的读者。PowerShell Loop异常后不会继续

我要做的就是在大量的虚拟机中禁用大量的服务。我有6-7个不同的环境来做到这一点,我创建了2个文本文件/ /路径,我给变量$ vmList和$ serviceList。

当我通过使用(外部IP)地址的不同环境运行这些地址时,它仅适用于1个环境。当我尝试使用(INTERNAL IP)地址运行时,我得到了相同的异常抛出,即它无法在机器上找到set服务(defragsvc),然后退出循环。但是,当我登录到这些机器时,他们肯定存在但尚未启动。我肯定失去了,为什么这部作品在1个环境(确认机器上),但没有在其他任何帮助,将不胜感激

 $vmList =gc C:\PowerCli\Services\Staging_1_Defrag_Kill.txt 
    $serviceList =gc C:\PowerCli\Services\ServicesKill.txt 


    ForEach ($vm in $vmList){ 
    ForEach ($service in $serviceList){ 

      write-host $vm 

      Stop-service -inputobject(Get-Service -Name $service -ComputerName $vm)-force -confirm:$false -EA SilentlyContinue 

      Set-Service -ComputerName $vm -Name $service -EA Stop -Startmode Disabled 
      Write-Host "$vm : Successfully disabled the service $service" -ErrorAction SilentlyContinue 
} 
} 
+0

不回答你的问题,而不是'-EA停止'我会推荐'尝试{Set-Service ; Write-Host } Catch {Write-Host“无法在$ vm上停止服务”为了更好地跟踪哪些是有效的,哪些不行,而不仅仅是转储脚本。 – TheMadTechnician

+0

没有您的网络关于组策略设置的知识,以及我不认为我们可以用提供的信息准确回答这个问题。 – TheMadTechnician

+0

EA停止是终止循环的原因。你是否确定你正在使用正确的服务名称?与友好名称相比,内部名称可能非常不同。 – bluuf

回答

0

哈,我想通了,

事实证明,我无法连接到服务控制管理器,这是一个权限错误,而不是脚本的问题。经验教训