簡體   English   中英

Powershell和Python - 如何以管理員身份運行命令

[英]Powershell and Python - How to run a command as admin

我在python中編寫代碼,我需要通過軟件名稱獲取互聯網流量。 我需要使用cmd命令netstat -nb ,該命令需要提升。 我必須保持簡單,一行左右,沒有長批量或PowerShell腳本。 如果我只使用子進程python庫,那更好。

我有兩行代碼可以滿足我的需求:

subprocess.check_output('powershell Start-Process netstat -ArgumentList "-nb" -Verb "runAs"', stdout=subprocess.PIPE, shell=True)

這個問題是它打開了一個新窗口,我需要的所有數據都丟失了。 也許有辦法不打開另一個窗口或保存新窗口的輸出?

subprocess.check_output('powershell Invoke-Command {cmd.exe -ArgumentList "/c netstat -nb"}', stdout=subprocess.PIPE, shell=True)

這個我在同一個窗口輸出,但我沒有高程,所以我沒有得到任何結果...也許有一種方法獲得提升而不打開一個新窗口左右?

謝謝你的幫助,希望我的問題很清楚。

創建批處理文件以執行捕獲輸出到臨時文件的任務:

[donetstat.bat]
netstat -nb > ".\donetstat.tmp"

然后執行程序中的:

[yourprogram.py]
subprocess.check_output('powershell Start-Process cmd -ArgumentList "/c ".\donetstat.tmp" -Verb "runAs"', stdout=subprocess.PIPE, shell=True)

獲取TEMP環境變量並將其用於完全限定的臨時文件位置可能會更具彈性:

netstat -nb > "%TEMP%.\donetstat.tmp"

然后在Python腳本中執行相同的操作。

一旦你創建了tempfile,你應該能夠用Python處理它。

如果這需要對多個工作進程持久,請添加一些代碼以確保每個進程都有唯一的臨時文件。

暫無
暫無

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

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