2016-05-23 6 views
0

Я пытаюсь получить статус определенной службы на серверах 2008 R2, перечисленных в текстовом файле.PowerShell: Get-Service w/Get-Content, -name и выберите

я когда-то был в состоянии успешно выполнить следующие действия:

$servers = Get-Content "C:\scripts\Computers.txt" 
Get-Service -ComputerName $servers -Name MrT | 
Select Name, MachineName, Status 

Как показано здесь: screenshot

Теперь, когда я запускаю тот же сценарий, я получаю следующее сообщение об ошибке:

Get-Service : Cannot validate argument on parameter 'ComputerName'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again. 
At line:3 char:27 
+ Get-Service -ComputerName $servers -Name MrT | 
+       ~~~~~~~~ 
    + CategoryInfo   : InvalidData: (:) [Get-Service], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetServiceCommand 

Технически, чтобы пройти мимо этого, я мог бы запустить следующее, но скорее побежал бы против списка серверов.

Get-Service -ComputerName 3b, 4b, 7b -Name MrT | Select Name, MachineName, Status 

Что я делаю неправильно и как оно работает один раз и не работает снова?

ответ

1

Как указывает сообщение об ошибке, переменная $servers, вероятно, не содержит никаких элементов. Проверьте выход с помощью:

Get-Content "C:\scripts\Computers.txt" 
+0

Когда я запустил это, я получаю список машин в списке. Спасибо за помощь. –

+0

Какой выход вы получаете, когда вы вызываете '$ servers.GetType()' –

+0

IsPublic: Правда IsSerial: Правда Имя: Правда BaseType System.Array –