标签: pstools

为什么我的 PowerShell 脚本在通过批处理 (.cmd) 文件在 PSEXEC 中调用时挂起?

我正在尝试使用PSEXEC. PowerShell 脚本通过.cmd批处理文件调用。我们这样做的原因是更改执行策略,运行 powershell 脚本然后再次重置执行策略:

在远程服务器上do-tasks.cmd看起来像:

powershell -command "&{ set-executionpolicy unrestricted}"  
powershell DoTasks.ps1  
powershell -command "&{ set-executionpolicy restricted}"  
Run Code Online (Sandbox Code Playgroud)

PowerShell 脚本DoTasks.ps1现在只是这样做:

Write-Output "Hello World!"
Run Code Online (Sandbox Code Playgroud)

这两个脚本都存在于c:\windows\system32(目前)中,因此它们位于 PATH 中。

在原始服务器上,我这样做:

psexec \\web1928 -u administrator -p "adminpassword" do-tasks.cmd

当它运行时,我在命令行收到以下响应:

c:\Windows\system32>powershell -command "&{ set-executionpolicy unrestricted}"

并且脚本不再运行。

我不能按 ctrl-c 来破坏脚本,我只能看到 ^C 字符,我可以从键盘输入输入,字符会回显到控制台。

在远程服务器上,我看到 PowerShell.exe 和 CMD.exe 正在任务管理器的进程选项卡中运行。如果我结束这些进程,那么控制将返回到原始服务器上的命令行。

我已经用一个简单的.cmd批处理文件尝试了这个,@echo hello world它工作得很好。

do-tasks.cmd通过 RDP 会话在远程服务器上运行也可以正常工作。

原始服务器运行 Windows 2003 SP2,远程服务器运行 Windows 2008 SP2。

为什么我的远程批处理文件在通过执行时卡住了 …

remote-access windows powershell pstools

4
推荐指数
2
解决办法
2万
查看次数

如何阻止 psexec?

我想知道是否有人知道如何防止其他系统使用 psexec 在我的机器上运行服务,假设运行 Windows 防火墙不是一种选择?

此外,我读到了一个 hacky 解决方案,您可以通过该解决方案创建一个名为“psexec”的手动服务,然后立即禁用它,因为它似乎在远程系统上检查此服务,如果存在则不会运行。然而,这对我来说似乎有点恶心。有什么替代品吗?

pstools

4
推荐指数
1
解决办法
1万
查看次数

PsExec 和远程环境变量、日志记录等

当我在远程计算机上运行 PsExec 时,我总是达不到我想要的效果。在大多数情况下,我想要的理想情况是 a) 管理服务器上的日志,其中每个日志都有生成它的每台远程计算机的名称(例如 COMPNAME1.log、COMPNAME2.log 等)或 b) a使用我指定的任何名称在每台远程计算机上的日志文件。

当我尝试场景 (a) 时,我使用以下命令。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username cmd /c echo TEST >> \\server.company.tld\share\%computername%.log
Run Code Online (Sandbox Code Playgroud)

问题是它永远不会奏效。所有的计算机都只是写入日志,%computername%我在办公室执行 PsExec 的计算机就在其中。我想要的是 listofcomputers.txt 中特定于每台计算机的唯一日志,这些日志将正确使用远程环境变量中的主机名而不会出现问题。这甚至可能吗?它似乎对我不起作用。我试过了,语法显然是错误的。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo TEST >> \\server.company.tld\share\%computername%.log"
Run Code Online (Sandbox Code Playgroud)

PsExec 只是失败,说找不到系统文件(阅读:语法失败)。

至于场景 (b),它似乎是类似问题的变体。当我运行这样的命令时,它不起作用。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo %computername% >> \\server.company.tld\share\aggregated.log"
Run Code Online (Sandbox Code Playgroud)

我对 cmd.exe 控制台上的 PsExec 的远程路径和环境变量有什么不了解的地方(我什至还没有尝试过可怕的 PowerShell)。我知道这样的东西在批处理文件 ( cmd /c \\server.company.tld\share\runthis.bat) 中工作,但是在将命令作为参数执行时是否有原因它不起作用?我总是需要这个,但永远无法得到它!

windows logging environment-variables pipe pstools

3
推荐指数
2
解决办法
3万
查看次数

PsExec 替代方案

是否有替代 PsExec 的替代实用程序?如果我主要使用批处理脚本进行自动化工作。由于 psexec 的不稳定,比如挂起/不响应,我可能需要另一个解决方案。社区能不能指点一下,谢谢。

编辑:我对 psexec 有 2 个特殊问题。

  1. https://superuser.com/questions/168706/cant-start-program-by-psexec-on-windows-server-2003-64-bit

  2. 我有一个 ASP.NET Web 服务,它只从远程 SOAP API 调用调用 psexec。每天检查时,我可以看到10-20 psexec挂在任务管理器中。在高峰时段,Web 服务器收到大约 1-5 个请求,但它可能只持续 5 分钟。下面是我的代码。


Process psexecProcess = new Process();
ProcessStartInfo psi = new ProcessStartInfo("PsExec.exe");

string psexecArg = "-u " + GetRemoteAccount(serverType) 
+ " -p " + GetRemotePW(serverType) 
+ " \\\\" + GetManagementServerIP(serverType) 
+ " C:\\MyBatchScript.bat " + username;           

//set process options
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.CreateNoWindow = true; …
Run Code Online (Sandbox Code Playgroud)

windows-server-2003 pstools

3
推荐指数
1
解决办法
2094
查看次数

通过脚本或批处理文件远程安装程序

首先,我不能使用组策略,因为我们的团队不管理它。该公司是一家庞大的 FTSE 公司,拥有一支涵盖您能想到的 IT 各个方面的团队。

我们的团队需要一种通过批处理文件或使用 Windows Installer 和 .msi 文件的脚本远程安装程序的方法。

到目前为止,我已经成功地使用 psexec 安装了 Java(见下文)

psexec \\pcname -u *username* -p *password* -i 
msiexec.exe /a "msilocation\install.msi"
Run Code Online (Sandbox Code Playgroud)

这没有任何问题。但是我想要一些比这更自动化的东西。

但是,我想要做的是能够从我的机器运行脚本或批处理文件,以便在列出的所有远程工作站上安装 msi。我很确定你可以在批处理文件中列出工作站,但我可能错了。

老实说,如果我必须在脚本或批处理文件中进行修复,我不会大惊小怪。我只是不能使用组策略等。

scripting windows-installer batch-file msi pstools

3
推荐指数
1
解决办法
3万
查看次数

在远程 Windows 7 计算机上弹出消息或运行程序,以便当前登录的用户可以看到它

您如何在远程计算机上弹出消息或运行程序,以便当前登录的用户可以看到它。

我们已在 WinXP 上完成此操作,但这些不适用于 Win7。

at.exe \\computername time /interactive message.vbs
Run Code Online (Sandbox Code Playgroud)

(时间是 hh:mm 未来至少一分钟)

psexec.exe \\computername -I message.vbs
Run Code Online (Sandbox Code Playgroud)

要测试它,您可以用 Notepad.exe 替换 message.vbs

windows-7 remote at pstools

3
推荐指数
1
解决办法
5万
查看次数

使用 winexe 启动 Windows 进程

当我在 Windows 上时,我使用PsExec在其他 Windows 机器上启动进程。我现在想从 Linux 机器上做到这一点。

幸运的是有winexe,一个应该像 PsExec 一样工作的小程序,只适用于 Linux 世界。我安装它没有问题,我可以启动 cmd.exe 之类的进程。

问题是我无法启动 Windows 用户可见的进程。如果我启动 calc.exe,我可以看到它在任务管理器中启动,但没有 GUI。

问题:
如何启动在 Windows 机器上实际可见的进程?

linux windows remote pstools

3
推荐指数
1
解决办法
3715
查看次数

如何使用 psexec 运行多个命令?

我需要在我们的一些工作站上运行一个命令来卸载最前沿,并且在格式化命令时遇到了一些麻烦。

这是需要发生的事情(在多个命令中)

xcopy \\serverpath\Installer.exe C:\Windows Install.exe /u /s Del C:\Windows\Install.exe

我正在将 psexec 与计算机列表一起使用,但一直遇到错误。这就是我的命令现在的样子。

psexec @ComputerList.txt -u domain\administrator cmd /c (xcopy "\\NetworkPath\Forefront Software\Install.exe" "C:\Windows" && Install.exe /u /s && del C:\Windows\Install.exe)
Run Code Online (Sandbox Code Playgroud)

我认为路径名和引号中的空格把事情搞砸了......

编辑:

尝试使用脚本运行它但没有运气。看起来 scepinstall.exe 只是挂在远程机器上。我也尝试使用可以在C:\Windows\ccmsetup\

谢谢您的帮助

command-line-interface copy windows-command-prompt uninstall pstools

3
推荐指数
1
解决办法
4万
查看次数

将批处理文件发送到 Windows 机器,并执行它

我知道 PsExec 非常适合通过网络上的计算机发送文件,然后在该远程计算机上执行它,但是我不能使用 PsExec,因为我正在开发一个软件,我不能将 PsExec 作为依赖项(出于法律原因等)。

在远程计算机上实现执行部分的最简单方法是什么?真的有那么难吗?我已经在用 xcopy 复制 .​​bat 文件了……我只需要运行它。

windows remote batch pstools

1
推荐指数
1
解决办法
2万
查看次数

在没有管理员密码的计算机上远程启动 VNC 服务器

我正在尝试远程访问我的特定计算机,但 VNC 似乎已停止。我可以确定计算机仍在运行,因为我可以通过 VNC 连接到同一网络上的另一台机器,并且可以在 Windows 资源管理器的“网络”部分下看到我的目标机器,也可以成功 ping 通它。

总结一下:

  • 我拥有目标计算机
  • 我目前距离物理访问它太远了
  • 未启用 Windows 的远程桌面连接功能
  • 电脑正常运行VNC服务器,但是好像停了
  • 电脑肯定是开机并连接到网络
  • 计算机在管理员帐户上没有密码
  • 我可以通过 VNC 连接到同一局域网上的其他计算机

鉴于这些条件,我如何进入目标以打开 VNC 服务器,甚至只是重新启动目标(VNC 应该在启动时打开)?

我尝试过 PsExec 并获得“访问被拒绝”,还尝试从计算机管理控制台“连接到另一台计算机..”并获得“访问被拒绝”。

remote-access vnc pstools

1
推荐指数
1
解决办法
1万
查看次数

如何使用 PSExec 异步运行批处理文件?

我有一个运行的批处理文件,其中包括重置机器中的 NIC。我在另一台监控第一台机器的机器上运行了一些看门狗软件。当检测到某些类型的故障时,我想使用 PSExec 运行此批处理文件。我遇到的问题是,由于批处理文件重置的是 NIC,它会终止 PSExec 的连接(我对此表示同意)。真正的问题是,当 PSExec 死机时,批处理文件停止运行(使 NIC 处于禁用状态)。

我试过在 PSExec 中使用 -i 选项,但没有成功。关于基本上只是触发批处理文件而不是在 PSExec 断开连接时停止它的任何想法?

pstools

0
推荐指数
1
解决办法
2万
查看次数