【问题标题】:Psexec can't execute remote batch filepsexec 无法执行远程批处理文件
【发布时间】:2015-12-21 06:58:39
【问题描述】:

我正在使用PSEXEC 来获取注册表项值。以下是我的代码。

PowerShell:

Set-Alias psexec "e:\test\psexec.exe"

psexec \\172.20.118.74 -i -d -s -u xsumrouadm -p Welkom01 /c "E:\test\DeviceHealthRegistry.bat"

批处理文件:

@echo off &setlocal
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0011 /v "IEEE11nmode"
@echo >> \\esessmw2395\c$\test\QueryDeviceHealth-Registry.csv

我收到如下错误:

psexec :  At line:3 char:1
+ psexec \\in00121324 e:\test\DeviceHealthRegistry.bat
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

The system cannot find the path specified.

Connecting to in00121324...
Starting PSEXESVC service on in00121324...
Connecting with PsExec service on in00121324...
Starting e:\test\DeviceHealthRegistry.bat on in00121324...
PsExec could not start e:\test\DeviceHealthRegistry.bat on in00121324:

计算机名修改为IP地址

psexec :  At line:3 char:1
psexec \\172.20.118.74 -i -d -s -u xsumrouadm -p Welkom01 /c "E:\test\DeviceHeal ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

The file exists.

Connecting to 172.20.118.74...
Starting PSEXESVC service on 172.20.118.74...
Connecting with PsExec service on 172.20.118.74...
Copying E:\test\DeviceHealthRegistry.bat to 172.20.118.74...
Error copying E:\test\DeviceHealthRegistry.bat to remote system:

【问题讨论】:

  • 错误提示:The system cannot find the path specified。看起来您需要仔细检查文件名和路径。也可以阅读 Sysinterals 的论坛了解一些 syntax tips
  • 我正在寻找错误的解决方案:PsExec 无法在 in00121324 上启动 e:\test\DeviceHealthRegistry.bat 和错误:将 E:\test\DeviceHealthRegistry.bat 复制到远程系统时出错:
  • /c -> -c 怎么样?
  • 根据technet.microsoft.com/en-us/sysinternals/psexec.aspx,如果您打算在执行文件之前将文件复制到远程计算机,则应使用-c。如果 .bat 文件已经存在于该机器上并且可以通过 PATH 找到,则可以跳过 -c 标志。
  • @PetSerAl PsExec 接受这两种表示法。

标签: powershell psexec


【解决方案1】:

你有两个不同的错误来自那里的两个不同的命令:

  • The system cannot find the path specified.
    发生此错误,因为您像这样运行PsExec

    psexec \\in00121324 e:\test\DeviceHealthRegistry.bat
    

    如果没有选项-c本地文件E:\test\DeviceHealthRegistry.bat不会复制到远程主机,并且没有远程文件E:\test\DeviceHealthRegistry.bat可用于执行。

  • The file exists.
    当您使用选项-c -d 运行PsExec 时发生此错误(该命令同时接受/- 参数表示法):

    psexec \\172.20.118.74 -i -d -s -u xsumrouadm -p Welkom01 /c "E:\test\DeviceHealthRegistry.bat"
    

    当您指示 PsExec 立即从远程进程 (-d) 分离时,复制到远程主机的文件在执行后不会被删除,因此您可能在 C:\Windows 上的先前尝试中有一个工件远程主机。删除该文件(和选项-d),命令应该会按预期运行。

    psexec \\172.20.118.74 -i -s -u xsumrouadm -p Welkom01 -c "E:\test\DeviceHealthRegistry.bat"
    

    如果您知道该文件已经存在于远程主机上,您也可以省略再次复制它并运行如下命令:

    psexec \\172.20.118.74 -i -d -s -u xsumrouadm -p Welkom01 DeviceHealthRegistry.bat
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多