2012-02-17 2 views
2

Когда я пытаюсь использовать командлет Get-Counter в Windows 7 под управлением администратора, я получаю следующую ошибку.параметр powershell Get-Counter -ComputerName в Windows 7

Get-Counter -computername "$env:ComputerName" '\Memory\Available MBytes' 

Get-Counter : Unable to connect to the specified computer or the computer is of 
fline. 
At line:1 char:12 
+ Get-Counter <<<< -computername "$env:ComputerName" '\Memory\Available MBytes 
' 
    + CategoryInfo   : InvalidResult: (:) [Get-Counter], Exception 
    + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.Ge 
    tCounterCommand 

Эта же команда работает, когда я пытаюсь его на XP 64, как это, а также на Windows 7, когда я исключить -ComputerName параметр.

Любая идея о том, как заставить это работать в Windows 7 с параметром имени пользователя?

Thanks

+0

'-ComputerName' предназначен для подключения к удаленному компьютеру. Вам не нужно указывать его, чтобы получить счетчик с локальной машины. –

+0

Спасибо Andy, я пытаюсь использовать тот же скрипт как для локального, так и для удаленного. Это другое, что меня смущает, оно работает на удаленных компьютерах, но не локально. Я также попытался отключить проверку цикла. Что не сработало. –

+0

'$ env: ComputerName' всегда будет именем локального компьютера, поэтому он никогда не будет работать на удаленных компьютерах. –

ответ

4

можно опустить -ComputerName параметр и путь счетчиков непосредственно:

get-counter "\\$env:computername\Memory\Available MBytes" 

и это похоже работать.

+0

Работает для меня тоже. Хорошая работа. –

+0

приятно. который работает локально и удаленно. –

0

Это, если несчастливо. Многие другие командлеты по-прежнему позволяют указать локальное имя компьютера с именем -Computername, но, видимо, не Get-Counter. С другой стороны, лучшей практикой мониторинга производительности является дистанционное решение.

Get-Counter -computername (get-content computers.txt) '\Memory\Available MBytes' 
+0

спасибо Джеффри, я понимаю, что мониторинг удаленно - это лучшая практика. Причина того, что вы хотите сделать это локально, пытается воспроизвести проблему с помощью приложения, развернутого на образе разработчиков. Похоже, что в Windows 7 должно произойти что-то, что мне не хватает, потому что оно работает на XP, а также работает на Windows 7 для Get-Counter -ComputerName «$ env: ComputerName» -ListSet »*« –

1

Поскольку Set-Counter не работает с -ComputerName $env:COMPUTERNAME положить некоторую логику в вашей функции, что делает что-то похожее на это:

function Get-ServerCounter { 
    param ($Server) 

    if ($env:COMPUTERNAME -eq $Server) { 
     Get-Counter -Counter '\Memory\Available MBytes'   
    } else { 
     Get-Counter -computername $Server -Counter '\Memory\Available MBytes' 
    } 
} 
+0

это работает , все же хотелось бы попытаться выяснить, какова основная причина проблемы. –

+0

Да, вроде как обойти ... Не уверен, что происходит, поскольку он работает на XP/2003 ... Возможно, вы захотите отправить вопрос [здесь] (http://connect.microsoft.com/PowerShell). –

+0

выглядит как кто-то избил меня. http://connect.microsoft.com/PowerShell/feedback/details/668897/using-get-counter-with-parameter-computername-does-not-work, но он отклонен как не воспроизводится. –

Смежные вопросы