CHẠY CÓ HIỂN THỊ CỬA SỔ

Thư viện: subprocess
Cách dùng: subprocess.run(['powershell', '-Command', powershell_command],capture_output=True, text=True)
subprocess.run: Đây là hàm trong module subprocess của Python, được sử dụng để thực thi một lệnh trong một tiến trình con.
['powershell', '-Command', powershell_command]: Đây là danh sách đối số truyền vào hàm subprocess.run. Trong đó:

  • powershell: Là lệnh để khởi chạy PowerShell. '
  • -Command: Là một tùy chọn của PowerShell để chỉ định rằng một chuỗi lệnh sẽ được truyền vào.
  • powershell_command: Là biến chứa chuỗi lệnh PowerShell mà bạn muốn thực thi.
capture_output=True: Tham số này cho biết subprocess.run sẽ bắt đầu và giữ lại đầu ra của tiến trình con để bạn có thể xử lý nó sau khi lệnh thực thi xong.
text=True: Tham số này cho biết đầu ra của tiến trình con sẽ được trả về dưới dạng văn bản (str) thay vì dạng byte.

VD: muốn xóa chuong trình Microsoft.ScreenSketch

import subprocess
# Câu lệnh PowerShell
powershell_cmd_remove = 'Get-AppxPackage *Microsoft.ScreenSketch* | Remove-AppxPackage'
# Chạy câu lệnh PowerShell từ Python
subprocess.run(['powershell', '-Command', powershell_cmd_remove],capture_output=True,
               text=True)

CHẠY KHÔNG HIỂN THỊ CỬA SỔ

Thư viện: subprocess
Cú pháp: subprocess.Popen(['powershell', '-Command', powershell_command],stdout=subprocess.PIPE, stderr=subprocess.PIPE, creationflags=subprocess.CREATE_NO_WINDOW)
subprocess.Popen: Đây là hàm trong module subprocess của Python, được sử dụng để khởi tạo một tiến trình con để thực thi lệnh.
['powershell', '-Command', powershell_command]: Đây là danh sách đối số truyền vào hàm subprocess.Popen. Trong đó:
  • powershell: Là lệnh để khởi chạy PowerShell.
  • -Command: Là một tùy chọn của PowerShell để chỉ định rằng một chuỗi lệnh sẽ được truyền vào.
  • powershell_command: Là biến chứa chuỗi lệnh PowerShell mà bạn muốn thực thi.
stdout=subprocess.PIPE và stderr=subprocess.PIPE: Điều này xác định rằng đầu ra chuẩn (stdout) và đầu ra lỗi (stderr) của tiến trình con sẽ được chứa trong các ống thông tin (pipes), để sau này có thể được truy cập thông qua thuộc tính communicate().
creationflags=subprocess.CREATE_NO_WINDOW: Tham số này được sử dụng để chấp nhận các cờ tạo tiến trình. Trong trường hợp này, CREATE_NO_WINDOW được sử dụng để không hiển thị cửa sổ console của PowerShell. Điều này thường được sử dụng khi bạn muốn chạy PowerShell ẩn và không muốn thấy cửa sổ console xuất hiện.

VD: muốn xóa chuong trình Microsoft.ScreenSketch 


import subprocess
# Câu lệnh PowerShell
powershell_cmd_remove = ' Get-AppxPackage *Microsoft.ScreenSketch* | Remove-AppxPackage'
# Chạy câu lệnh PowerShell từ Python
subprocess.Popen(['powershell', '-Command', powershell_cmd_remove],stdout=
subprocess.PIPE, stderr=subprocess.PIPE, creationflags=subprocess.CREATE_NO_WINDOW)

Đoạn code kiểm tra phiên bản

process.communicate(): Được gọi để chờ đợi cho tiến trình con kết thúc và thu thập đầu ra chuẩn và đầu ra lỗi. Kết quả trả về từ communicate() là một tuple (stdout_data, stderr_data), chứa thông tin đầu ra từ stdout và stderr của tiến trình con.
# Phiên bản cần kiểm tra
target_version = "11.2203.3.0"
# PowerShell script to check the application version
powershell_script = f'''
$packageName = "Microsoft.ScreenSketch"
$targetVersion = "{target_version}"
$installedPackages = Get-AppxPackage | Where-Object {{ $_.Name -eq $packageName }}

if ($installedPackages -and $installedPackages.Version -eq $targetVersion) {{
    Write-Host "Phiên bản $targetVersion của $packageName đã được cài đặt."
    exit 1  # Dừng chương trình với mã lỗi 1
}} else {{
    Write-Host "Phiên bản $targetVersion của $packageName chưa được cài đặt."
}}
'''
# Run PowerShell using subprocess.Popen
process = subprocess.Popen(["powershell", "-NoProfile", "-ExecutionPolicy",
"Bypass", "-Command", powershell_script],stdout=subprocess.PIPE,
stderr=subprocess.PIPE, text=True, creationflags=subprocess.CREATE_NO_WINDOW)
# Capture the output and error
output, error = process.communicate()
# Check the result
if process.returncode == 1:
    print('đã có')
else:
    print('chưa có')

Post a Comment

أحدث أقدم