Я пытаюсь запустить Get-WinEvent
на удаленном ПК, psexec
но получаю следующую ошибку:
PS C:\> psexec \\pc28 Get-WinEvent -?
Starting Get-EventLog on pc28...
PsExec could not start Get-EventLog on pc28:
The system cannot find the file specified.
Однако если я запускаю ту же команду локально на другом компьютере, она выполняется нормально:
PS C:\> Get-WinEvent -?
NAME
Get-WinEvent
SYNTAX
Get-WinEvent [[-LogName] <string[]>]...
(etc.)
Похоже, что я могу выполнить другие команды на удаленном ПК, такие как systeminfo
и , wmic
но ни одну из Get-*
команд.
Локальный и удаленный ПК работают под управлением Windows 10 и PowerShell 5.1. Я пробовал запускать psexec
версии 2.2 и 2.33 на локальном ПК. (Любопытно, что версия 2.2 выдает указанную выше ошибку, а версия 2.33 выдает сообщение об ошибке входа в систему даже с учетными данными администратора.)
ОТВЕЧАТЬ: Как Роберт указал в комментариях ниже, psexec
это для запуска исполняемых файлов, а не команд PowerShell. Смотрите отмеченный ответ ниже, чтобы узнать, как сделать то же самое, но с помощью Invoke-Command
и PSRemoting
вместо этого.
решение1
Вам не нужно psexec
запускать команды PowerShell удаленно на других машинах. Убедитесь, что на удаленной машине естьPSУдалённое управлениевключен, а затем запустите команды PowerShell на удаленной машине, используяinvoke-команда.
Включить-PSRemotingна удаленной машине
Enable-PSRemoting -Force
Выполнение удаленных команд PowerShell
Invoke-Command -Computer pc28 -Scriptblock { Get-WinEvent -? }
Поддерживающие ресурсы
-
-ScriptBlock scriptblock
Команды для запуска.
Заключите команды в фигурные скобки
{ }
, чтобы создать блок скрипта. Этот параметр является обязательным.