我正在尝试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.)
看来我可以在远程 PC 上运行其他命令,例如systeminfo
和,wmic
但不能运行任何Get-*
命令。
本地和远程 PC 均运行 Windows 10 和 PowerShell 5.1。我尝试psexec
在本地 PC 上运行版本 2.2 和 2.33。(奇怪的是,即使使用管理员凭据,版本 2.2 也会给出上述错误,而版本 2.33 也会给出登录失败消息。)
回答:正如罗伯特在下面的评论中指出的那样,psexec
用于运行可执行文件,而不是 PowerShell 命令。请参阅下面标记的答案,了解如何使用和Invoke-Command
来执行相同的操作PSRemoting
。
答案1
您不需要psexec
远程针对其他计算机运行 PowerShell 命令。确保远程计算机已远程控制启用,然后使用以下命令对远程计算机运行 PowerShell 命令调用命令。
启用PSRemoting在远程机器上
Enable-PSRemoting -Force
运行远程 PowerShell 命令
Invoke-Command -Computer pc28 -Scriptblock { Get-WinEvent -? }
支持资源
-
-ScriptBlock scriptblock
要运行的命令。
将命令括在花括号中
{ }
以创建脚本块。此参数是必需的。