import subprocess
command = r'C:\Windows\system32\windowspowershell\v1.0\powershell.exe -noe -c ". \"C:\Program Files\VMware\VMware View\Server\extras\PowerShell\add-snapin.ps1\""'
command2 = 'Get-PoolEntitlement -pool_id gameserver2 | Remove-
PoolEntitlement'
output = subprocess.getoutput[command]
output = subprocess.getoutput[command2]
print[output]
Tôi đã chạy nhiều lệnh liên quan. Nhưng tôi không
error:
'Get-PoolEntitlement' is not recognized as an internal or external command,
chương trình có thể hoạt động hoặc tập tin hàng loạt.
Đã hỏi ngày 21 tháng 2 năm 2018 lúc 0:24Feb 21, 2018 at 0:24
Nếu bạn cần thực thi nhiều lệnh CMD cùng một lúc, bạn có thể đặt '&&' giữa chúng.
Ví dụ: cả hai sẽ điều hướng đến thư mục tài liệu và khởi động lời nhắc lệnh mới, hy vọng điều này sẽ giúp
Đã trả lời ngày 21 tháng 2 năm 2018 lúc 0:57Feb 21, 2018 at 0:57
PhonziphonziPhonzi
1344 Huy hiệu bạc9 Huy hiệu đồng4 silver badges9 bronze badges
Trong lệnh đầu tiên của bạn, bạn đang gọi PowerShell:
command = r'C:\Windows\system32\windowspowershell\v1.0\powershell.exe -noe -c ". \"C:\Program Files\VMware\VMware View\Server\extras\PowerShell\add-snapin.ps1\""'
Trong lần thứ hai bạn không!
command2 = 'Get-PoolEntitlement -pool_id gameserver2 | Remove-PoolEntitlement'
Vì vậy, bạn chỉ cần sửa nó như:
command2 = r'C:\Windows\system32\windowspowershell\v1.0\powershell.exe -noe -c "Get-PoolEntitlement -pool_id gameserver2 | Remove-PoolEntitlement"'
Đã trả lời ngày 21 tháng 2 năm 2018 lúc 4:47Feb 21, 2018 at 4:47
Gveegveegvee
16.4K32 Huy hiệu bạc48 Huy hiệu đồng32 silver badges48 bronze badges
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ê.