使用psexec远程执行时,脚本中的Reg Query无法正常工作

时间:2016-09-19 19:26:44

标签: batch-file

我最近得到了一个脚本,用于查询reg文件夹路径并清理文件夹,它工作得很好(感谢Compo)但是当与psexec远程使用时它会说,"系统无法找到指定的注册表项或值。"在我使用PSEXEC执行批处理之前,我首先将它复制到C:\并使用它来执行此操作。

set /p cpu=

robocopy "\\nmcfs01\software\scripts\Jacob's Awesome Outlook Scripts" \\%cpu%\c$\Jacob'sTemp

那部分顺利然后我用psexec和

执行它
psexec \\%cpu% -u administrator -i -d "C:\Jacob'sTemp\compo.bat"

连接但是当它执行批处理文件时,它找不到reg键。但是,如果我转到C:\ Jacob' sTemp并双击compo.bat文件,它可以正常工作并删除文件。此外,如果我只是使用PSEXEC在此脚本之外再次执行它,在它被复制后再单独执行它仍然不起作用。这是我用来清理它的脚本。

@Echo Off
SetLocal EnableExtensions

(Set OV=14.0)

Choice /C YN /M "Delete Outlook Temp Files?"
If ErrorLevel 2 Exit/B
Set "BK=HKCU\SOFTWARE\Microsoft\Office\"
Set "EK=\Outlook\Security"
Set "VN=OutlookSecureTempFolder"
For /F "Tokens=2*" %%I In ('Reg Query "%BK%%OV%%EK%" /V %VN%') Do Set "VD=%%J"
PushD "%VD%" && (RD/S/Q "%VD%" 2>Nul) && PopD
pause
REM The below commands will empty Jacob'sTemp:
If Exist "%SystemDrive%\Jacob'sTemp" (PushD "%SystemDrive%\Jacob'sTemp" && (
    (RD/S/Q "%SystemDrive%\Jacob'sTemp" 2>Nul) && PopD
pause
REM The below commands without the first two characters will remove Jacob'sTemp
If Exist "%SystemDrive%\Jacob'sTemp" (RD/S/Q "%SystemDrive%\Jacob'sTemp"
Pause
Echo(------------------------------------------------------------------------------
Echo( Complete!  Goodbye!
Echo(------------------------------------------------------------------------------
Timeout 5 >Nul

如果我们可以只输入和完成计算机名称,这将是一项巨大的帮助,但我不知道为什么它在远程执行时无法正常工作并将其复制到计算机中。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

HKCU(您的reg查询的目标)是每个用户注册表配置单元。 psexec的远程服务在SYSTEM帐户中运行,当它发出reg查询时,该查询不会定向到远程计算机当前登录的用户的HKCU。它将被定向到映射在HKEY_USERS \ S-1-5-18 \ Software ...下的SYSTEM帐户的HKCU。因此错误“系统无法找到指定的注册表项或值。”