2013-05-28 2 views
6

У меня есть сценарий powershell, который работает на сервере (тестовый сервер) и читает файл журнала своего клиента (DC1).Чтение журнала событий удаленно с помощью Get-EventLog в Powershell

  • Обе стороны могут пинговать друг другу.
  • С обеих сторон брандмауэры отключены.
  • Удаленный рабочий стол и удаленный помощник включены на DC1.

    Get-EventLog System -ComputerName test-server -Source Microsoft-Windows-Winlogon # WORKS 
    Get-EventLog System -ComputerName DC1 -Source Microsoft-Windows-Winlogon # DOESN'T WORK 
    

я запускаю этот скрипт на тестовом сервере. Как вы видите, когда я читаю локальный файл журнала на тестовом сервере, он работает нормально, но если я попытаюсь прочитать файл журнала DC1 удаленно, я получаю сообщение об ошибке «Get-EventLog: сетевой путь не найден.».

Скриншот ошибки: enter image description here

Как я могу избежать этой ошибки и прочитать файл журнала DC1 с тест-сервера с помощью Get-EventLog?

+1

Отсутствие разрешений? Можно ли выполнить ' dir \\ dc1 \ c $ 'от тестового сервера? –

+0

@Shay Levy Я просто попробовал. Я получаю список каталогов, поэтому могу. –

+1

Вы можете перечислить процессы/службы dc1? –

ответ

8

Предложение @Lars Truijens решило мою проблему. Но другие рекомендации также важны для проверки.

Итак, вот контрольный список, если вы получаете такого рода ошибки при попытке получить удаленный лог-файлы:

  • Отключить или настроить параметры брандмауэра на обеих сторонах.
  • Включите удаленный рабочий стол и удаленный помощник на клиентской машине.
  • Можете ли вы выполнить ping на клиентской машине?
  • Запустите dir \\dc1\c$, чтобы увидеть, что вы можете добраться до жесткого диска . (@ предложение Шей Леви)
  • Пробег Get-Service -ComputerName YOURCOMPUTERNAME, чтобы увидеть, что вы разрешено пользоваться услугами. (@ Предложение Шей Леви)
  • Запустите службу удаленного реестра. (предложение @Lars Truijens игровая и это сделало работу для меня)

Вот скриншот этого решения: SolutionScreenshot

7

Запуск RemoteRegistry службы не помогло в моем случае.

По-видимому, существует разница между удаленным доступом, доступ к которому осуществляется через параметр ComputerName в некоторых командлетах, таких как Get-Service, и более новая форма удаленного доступа, доступ к которой осуществляется с помощью командлетов, таких как Invoke-Command.не

Since traditional remote access is implemented by individual cmdlets, it is inconsistent (uses different techniques and demands different requirements) and available only in selected cmdlets. The technology used for remote access can vary from cmdlet to cmdlet and is not readily known to you. Each cmdlet uses whatever remoting technology its author chose. Most cmdlets use Remote Procedure Call (RPC), but might also require additional services and settings on the target system.

Beginning in Windows PowerShell 2.0, there is an alternate and more universal way of accessing remote systems: Windows PowerShell Remoting. With this type of remoting, Windows PowerShell handles remote access for all commands. It transfers your commands to the remote system using the relatively new and highly configurable WinRM service, executes the code in a separate session that runs on the remote system, and returns the results to the calling system.

http://powershell.com/cs/media/p/7257.aspx

Когда я сменил из этой команды

get-eventlog -LogName System -computername <ServerName> 

к этому

invoke-command {get-eventlog -LogName System} -ComputerName <ServerName> 

я больше не получил следующую ошибку

get-eventlog : The network path was not found.

+0

(oops: Я проигнорировал это полностью по ошибке - и теперь мой голос заблокирован - я на самом деле пытался его перепроверить): -/ – monojohnny

+0

@monojohnny Я редактировал вопрос - вы должны быть способны изменить свой голос сейчас. – Default

+0

Сделано: и проголосовали! Приветствия! – monojohnny

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