Bạn hoàn toàn nên xem những gì PowerShell. exe đang hoạt động vì bạn đang sử dụng một bên ngoài để gọi Powershell. exe và đó là một phiên bắt đầu hoàn toàn riêng biệt so với phiên python mà bạn đang tham gia
Do đó, bạn không chỉ thấy bảng điều khiển python mà cả bảng điều khiển PowerShell cũng sẽ bật lên và nếu bạn muốn xem nó đang làm gì, bạn cần sử dụng các công tắc tạm dừng, -wait hoặc noexit. Xem tệp trợ giúp PowerShell để biết thêm chi tiết
Biến tự động PowerShell yêu cầu bạn chỉ định tên người dùng như thế này
$env:USERNAME
không phải cái này
%USERNAME%
PowerShell có nhiều biến tự động đến từ ổ Env
Get-PSDrive | Format-Table -AutoSize
Get-ChildItem -Path 'env:\'
Bạn truy cập từng cái theo tên biến của chúng
$env:USERNAME
$env:USERPROFILE
$env:COMPUTERNAME
Có thể bạn thực sự giỏi Python, nhưng tại sao bạn lại sử dụng Python để thực hiện công cụ PowerShell, thay vì sử dụng PowerShell trực tiếp, đặc biệt là khi cố gắng sử dụng các lệnh ghép ngắn ADDS [RSAT]?
Công cụ quản trị máy chủ từ xa dành cho Windows 7 với Gói dịch vụ 1 [SP1]
Cài đặt RSAT cho Windows 10 1809 và 1903 và 1909 tự động
Sử dụng các lệnh ghép ngắn PowerShell Active Directory mà không cần cài đặt bất kỳ phần mềm nào
hoặc bạn đã thực hiện một kết nối từ xa Powershell ẩn/rõ ràng
about_Remote - PowerShell. Tài liệu Microsoft
PowerShell ẩn thư mục hoạt động từ xa
đến một DC [hoặc một máy chủ khác có công cụ RSAT], để ủy quyền các lệnh ghép ngắn đó cho phiên PowerShell của bạn, thì chúng thậm chí không có sẵn để sử dụng
Bạn cũng không sử dụng thuộc tính cú pháp cmdlet
Get-ADPrincipalGroupMembership
Điều này khiến người ta cho rằng bạn chưa quen với ADDS với PowerShell, điều này không sao nhưng sẽ khiến bạn phải tăng tốc trên cả hai nguyên bản, trước khi thử hợp nhất với một ngôn ngữ bên ngoài
Trả lại để tìm kiếm Youtube cho
Vì vậy, đây là những gì tôi đang minh họa trong các bình luận khác của mình. và tại sao nếu bạn đang cố gắng loại bỏ phiên này khỏi phiên Python, so với trực tiếp từ PowerShell, thì đó có thể là một chút thách thức, bởi vì Python cần gì để chạy và gọi PowerShell để Powershell có tài nguyên để chạy một lệnh ghép ngắn nhất định. Tôi không có Python trong môi trường và tôi cũng không cần nó để kiểm tra điều này. Tôi làm PSremting mỗi ngày, cũng như nhiều người trong ngành và nó hoạt động tốt
# Change this...
import subprocess
subprocess.Popen['powershell.exe [Get-ADPrincipalGroupMembership %USERNAME% | select name]']
os.system['powershell.exe Get-ADPrincipalGroupMembership %USERNAME% | select name]']
# To this, Impot the process
import subprocess
# Use a subprocess to start powershel.exe, which creates an implicit PowerShell remote session to a DC to proxy the RSAT/ADDS cmdlets to get group information
subprocess.call[["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "$DCSssion = New-PSSession –ComputerName 'YourDCName'", "Invoke-Command –Session $DCsession –ScriptBlock {Get-ADPrincipalGroupMembership -Identity $env:USERNAME | Select-Object -Property Name}"]]
điểm lưu ý. Để gọi lệnh trên máy chủ từ xa, bạn phải là quản trị viên trên máy chủ từ xa đó
***Cập nhật dựa trên chủ đề của bạn ***
Tôi không thể xử lý dữ liệu tốt và nó thật rắc rối nhưng nó vẫn hoạt động
PowerShell trả về các đối tượng, theo thiết kế/mặc định, không phải chuỗi. Vì vậy, khi bạn chạy những thứ như thế này
Get-ADPrincipalGroupMembership -Identity $ntaccount1 |
select-Object -Property Name |
Where-Object {$PSItem.name -like '*certain string*' } |
Sort Name
Tất cả những gì bạn nhận được là một đối tượng thuộc tính. Tên được sắp xếp tăng dần. Bạn cũng có thể làm điều này nếu tất cả những gì bạn muốn là một tài sản