簡體   English   中英

我不能將 PsExec 與 python 子進程一起使用

[英]I can't use PsExec with python subprocess

我想遠程連接到計算機並打開一個 Windows 命令行,但有一個特殊性:我使用 python 來實現自動化。 我通常使用 PsExec 來手動遠程連接,但我注意到一些問題:無法制作選項卡,命令行有限,這對我的 python 腳本很重要。

我使用子進程在后台打開一個cmd,並使用“&&”操作執行多個命令。 我的命令如下所示:

command = "cd \folder\location && PsExec \<domainname> cmd && ipconfig"

然后我使用子進程:

process = sp.Popen('cmd /k "'+command+'"', stdin=sp.PIPE, stdout=sp.PIPE, shell=True)

我的問題出現在執行 ipconfig 命令時,我得到的結果要歸功於打印

proc_stdout = process.communicate()[0].strip()

顯示與 PsExec 的連接是成功的。 但是 ipconfig 顯示的是源計算機的配置,而不是目標計算機的配置。

這意味着該命令有效,但跳過了 PsExec 層。

如果有人有能夠在 python 腳本上使用 PsExec 命令的解決方案,或者如果您有替代方案,我會很高興聽到他們的聲音!

謝謝你!

看起來您已經完成了大量工作,並且我認為您已經非常接近 Python 端了。

我建議你做的是先整理psexec的東西,然后再將它發射到 Python 中。

您的command變量可能有兩個問題:

  1. 示例中的cmd不一定是字面的。 事實上cmd實際上是你可以運行的東西,這有點像紅鯡魚。 您將要運行的應用程序放在那里,而不是cmd

  2. &&分隔符告訴窗口這是一個新命令。 所以它在psexec命令退出后運行ipconfig (就像它在cd命令完成后運行psexec一樣)。

所以我認為你需要的命令是command = "cd \folder\location && PsExec <domainname> ipconfig

因為ipconfig是通常位於系統路徑上的實用程序之一,所以您無需提供完整路徑。

不過,我要做的是打開一個 Windows 命令外殼並調整PsExec命令,直到您看到目標計算機的ipconfig

然后你可以回到 Python 並插入你的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM