Hướng dẫn can you run powershell commands in python? - bạn có thể chạy các lệnh powershell trong python không?

Tôi muốn thực thi các lệnh bên dưới từ Python, nhưng tôi không nhận được bất kỳ đầu ra nào:

get-winevent -logname Microsoft-Windows-TerminalServices-LocalSessionManager/Operational -ComputerName $env:COMPUTERNAME | where {$_.Id -eq "21"}

Tôi đã tìm thấy một số giải pháp như dưới đây, nhưng chúng cũng không chạy thành công:

subprocess.Popen('powershell.exe [get-winevent -logname Microsoft-Windows-TerminalServices-LocalSessionManager/Operational -ComputerName $env:COMPUTERNAME] | where {$_.Id -eq "21"}')

Hướng dẫn can you run powershell commands in python? - bạn có thể chạy các lệnh powershell trong python không?

Hỏi ngày 24 tháng 1 năm 2019 lúc 3:30Jan 24, 2019 at 3:30

Hướng dẫn can you run powershell commands in python? - bạn có thể chạy các lệnh powershell trong python không?

1

Sử dụng thư viện subprocess, có thể chạy các lệnh CMD trong Python. Để chạy các lệnh PowerShell, tất cả những gì bạn cần làm là thực thi C: \ Windows \ System32 \ PowerShell.exe và đi qua các đối số.

Đây là một số mã ví dụ để thử:

import subprocess

subprocess.call('C:\Windows\System32\powershell.exe Get-Process', shell=True)

Bạn có thể thay thế "Get-Process" bằng lệnh PowerShell bạn cần

Đã trả lời ngày 24 tháng 1 năm 2019 lúc 3:38Jan 24, 2019 at 3:38

6

Bỏ qua nội dung

Tôi có một thí nghiệm mà tôi đang làm việc và nghĩ rằng việc tận dụng Python sẽ rất vui. Là một phần của thí nghiệm đó, tôi sẽ cần thực hiện PowerShell từ Python vì chỉ có các cmdlet PowerShell mới có sẵn để làm những gì tôi cần. Sau một chút nghiên cứu một tuần để cho nó sôi, tôi đã có thể ngồi xuống đêm qua và giải quyết nó. Một phần của nó là sự không quen thuộc của tôi với Python cho những gì tôi đang làm, và phần khác chỉ là tôi không nghĩ về vấn đề này một cách toàn diện.

Những gì bạn cần

Bạn sẽ cần PowerShell được cài đặt trên hệ thống của bạn và Python 3.6+. Điều này sẽ làm việc đa nền tảng. Tôi đã thực hiện thử nghiệm của mình trên Kubuntu 20.10 Chạy PowerShell dưới dạng gói SNAP. Bạn sẽ không cần bất kỳ thư viện bên ngoài nào vì chúng tôi sử dụng một trong nhiều thư viện tuyệt vời gửi ra khỏi hộp với Python.

Mật mã

Tất cả những gì chúng ta cần là tạo một cuộc gọi tệp Ps.Py, và sau đó chúng ta có thể nhập mô -đun phụ.

Bây giờ chúng ta có thể tạo phương thức chạy mà chúng ta sẽ sử dụng để thực hiện lệnh PowerShell của mình.

def run(self, cmd):
    completed = subprocess.run(["powershell", "-Command", cmd], capture_output=True)
    return completed

Hãy để thực hiện tệp Python của chúng tôi và sau đó tạo các lệnh mà chúng tôi muốn thực thi. Một lệnh có cú pháp chính xác và một lệnh có cú pháp xấu. Điều này sẽ chứng minh cách sử dụng return của phương thức phụ.

if __name__ == '__main__':
    hello_command = "Write-Host 'Hello Wolrd!'"
    hello_info = run(hello_command)
    if hello_info.returncode != 0:
        print("An error occured: %s", hello_info.stderr)
    else:
        print("Hello command executed successfully!")
    
    print("-------------------------")
    
    bad_syntax_command = "Write-Hst 'Incorrect syntax command!'"
    bad_syntax_info = run(bad_syntax_command)
    if bad_syntax_info.returncode != 0:
        print("An error occured: %s", bad_syntax_info.stderr)
    else:
        print("Bad syntax command executed successfully!")

Đây là tập tin hoàn chỉnh.

import subprocess


def run(self, cmd):
    completed = subprocess.run(["powershell", "-Command", cmd], capture_output=True)
    return completed


if __name__ == '__main__':
    hello_command = "Write-Host 'Hello Wolrd!'"
    hello_info = run(hello_command)
    if hello_info.returncode != 0:
        print("An error occured: %s", hello_info.stderr)
    else:
        print("Hello command executed successfully!")
    
    print("-------------------------")
    
    bad_syntax_command = "Write-Hst 'Incorrect syntax command!'"
    bad_syntax_info = run(bad_syntax_command)
    if bad_syntax_info.returncode != 0:
        print("An error occured: %s", bad_syntax_info.stderr)
    else:
        print("Bad syntax command executed successfully!")

Thực hiện Ps.Py và chúng ta có thể thấy đầu ra. Lệnh đầu tiên đã không thành công và trả lại một mã thoát bằng 0 và chúng tôi in nó đã chạy thành công. Lệnh thứ hai có một lỗi đánh máy và chúng tôi nhận được mã thoát của một cái mà sau đó chúng tôi in lỗi xuất phát từ lỗi tiêu chuẩn.

$ python ps.py
Hello command executed successfully!
-------------------------
An error occurred: %s b"\x1b[91mWrite-Hst: \x1b[91mThe term 'Write-Hst' is not recognized as the name of a cmdlet, function, script file, or operable program.\nCheck the spelling of the name, or if a path was included, verify that the path is correct and try again.\x1b[0m\n"

Sự kết luận

Đó là nó, bây giờ bạn có thể cảm thấy thoải mái khi xây dựng bất kỳ loại lệnh nào mà bạn muốn được thực thi, thậm chí các lệnh đa dòng và nó sẽ hoạt động.

Cảm ơn vì đã đọc,

Jamie

Nếu bạn thích nội dung thì hãy xem xét mua cho tôi một ly cà phê.

Python có thể được sử dụng thay vì PowerShell không?

Các hành động tương tự có thể được thực hiện và cùng một mức độ tự động hóa có thể đạt được bằng cách sử dụng Python hoặc PowerShell.Quản trị viên thường tự động hóa các quy trình thường xuyên bằng cách sử dụng các tập lệnh.the same level of automation can be achieved using either Python or PowerShell. Admins generally automate regular processes by making use of scripts.

Làm thế nào để Python kết nối với PowerShell?

Tất cả những gì chúng ta cần là tạo một cuộc gọi tệp Ps.Py, và sau đó chúng ta có thể nhập mô -đun phụ.Bây giờ chúng ta có thể tạo phương thức chạy mà chúng ta sẽ sử dụng để thực hiện lệnh PowerShell của mình.Hãy làm cho tệp Python của chúng tôi thực thi và sau đó tạo các lệnh chúng tôi muốn thực thi.create a file call ps.py, and then we can import the subprocess module. Now we can make our run method that we will use to execute our PowerShell command. Let's make our Python file executable and then create the commands we want to execute.

Python có hiệu quả hơn PowerShell không?

Python có sự hỗ trợ lớn trong các lĩnh vực mà PowerShell chưa bao giờ chạm vào, chẳng hạn như khoa học dữ liệu, phân tích thống kê, v.v.Python đôi khi cảm thấy giống như một ngôn ngữ định hướng khoa học.Python cũng chạy nhiều ứng dụng web phía máy chủ lớn và các ứng dụng thân thiện với nhà phát triển khác., such as data science, statistical analysis, and more. Python feels more like a scientifically-oriented language sometimes. Python also runs many large server-side web apps and other “developer friendly” applications.

Ngôn ngữ lập trình nào được sử dụng với kịch bản PowerShell?

PowerShell được xây dựng trên thời gian chạy ngôn ngữ chung .NET (CLR).. NET Common Language Runtime (CLR).