PSExec 不断要求接受 EULA 的原因是什么?

PSExec 不断要求接受 EULA 的原因是什么?

我在 Windows 10 中运行的脚本中使用 PSExec 向 Windows 7 发送一些命令。但是,有时这些命令不起作用,我意识到发生这种情况是因为在随机时间,当我发送命令时,我会收到消息:

“这是该程序的第一次运行。您必须接受 EULA 才能继续。使用 -accepteula 接受 EULA。”

因此命令没有任何效果。然后,我手动发送命令并接受 EULA,一切正常,直到下一个随机时间再次显示上一条消息。

我想知道如何阻止这种行为。

答案1

问题是您的脚本可以在不同的上下文中运行。例如,用户可能被识别为本地用户,并且脚本将代表该用户开始执行。通常,组策略脚本代表系统用户等等。除其他事项外,您正在使用不同的系统环境运行脚本。在启动脚本之前,当您已经连接到资源时,值得检查环境变量,这些变量对于回答脚本在哪里、以什么权限以及在什么环境中执行的问题很重要。对于许多系统,特别是 Windows 7 有临时变量,“易挥发的”

读取环境变量.vbs:

Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment
WScript.Echo "WINDIR=" & WshEnv.Item("WINDIR")  & vbCrLf &_
                                                  vbCrLf

Set WshShell = CreateObject("WScript.Shell")
WScript.Echo "Environment System:"              & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("System")
    WScript.Echo IEnv
Next

WScript.Echo vbCrLf & "Environment User:"       & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("User")
    WScript.Echo IEnv
Next

WScript.Echo vbCrLf & "Environment Volatile:"   & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("Volatile")
    WScript.Echo IEnv
Next
WScript.Echo vbCrLf & "Environment Process:"    & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("Process")
    WScript.Echo IEnv
Next

看法:

cscript ReadEnv.vbs | more

保存到文件:

cscript ReadEnv.vbs >> out.txt

如果你不关心你的脚本是由哪个用户执行的,你可以在其中添加一行

psexec //YourRemoteStationName reg ADD HKCU\Software\Sysinternals\PSexec /v EulaAccepted /t REG_DWORD /d 1 /f

在这种情况下,您将收到远程站点的密钥安装,并且

如果 psexec 在本地运行,则安装密钥:

reg ADD HKCU\Software\Sysinternals\PSexec /v EulaAccepted /t REG_DWORD /d 1 /f

答案2

psexec使用参数运行-accepteula

从运行时的帮助psexec /?

-accepteula 此标志抑制许可证对话框的显示。

相关内容