Quy trình con Python chạy lệnh PowerShell

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
<#
# Results

Name     Used (GB) Free (GB) Provider    Root                CurrentLocation
----     --------- --------- --------    ----                ---------------
..                                
Env                          Environment                                    
...
#>

Get-ChildItem -Path 'env:\'
<#
Name                           Value                                                                                                                                                       
----                           -----                                                                                                                                                       
ALLUSERSPROFILE                C:\ProgramData                                                                                                                                              
APPDATA                        C:\Users\Daniel\AppData\Roaming                                                                                                                             
CommonProgramFiles             C:\Program Files\Common Files                                                                                                                               
CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files                                                                                                                         
CommonProgramW6432             C:\Program Files\Common Files                                                                                                                               
COMPUTERNAME                   LP70                                                                                                                                                        
ComSpec                        C:\Windows\system32\cmd.exe                                                                                                                                 
DriverData                     C:\Windows\System32\Drivers\DriverData                                                                                                                      
HOMEDRIVE                      C:                                                                                                                                                          
HOMEPATH                       \Users\Daniel                                                                                                                                               
LOCALAPPDATA                   C:\Users\Daniel\AppData\Local                                                                                                                               
LOGONSERVER                    \\LP70                                                                                                                                                      
MSMPI_BENCHMARKS               C:\Program Files\Microsoft MPI\Benchmarks\                                                                                                                  
MSMPI_BIN                      C:\Program Files\Microsoft MPI\Bin\                                                                                                                         
NUMBER_OF_PROCESSORS           8                                                                                                                                                           
OneDrive                       C:\Users\Daniel\OneDrive                                                                                                                                    
OneDriveConsumer               C:\Users\Daniel\OneDrive                                                                                                                                    
OS                             Windows_NT                                                                                                                                                  
Path                           C:\Program Files\Microsoft MPI\Bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System...
PATHEXT                        .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL                                                                                                  
POWERSHELL_DISTRIBUTION_CHA.. MSI:Windows 10 Pro                                                                                                                                          
PROCESSOR_ARCHITECTURE         AMD64                                                                                                                                                       
PROCESSOR_IDENTIFIER           Intel64 Family 6 Model 94 Stepping 3, GenuineIntel                                                                                                          
PROCESSOR_LEVEL                6                                                                                                                                                           
PROCESSOR_REVISION             5e03                                                                                                                                                        
ProgramData                    C:\ProgramData                                                                                                                                              
ProgramFiles                   C:\Program Files                                                                                                                                            
ProgramFiles(x86)              C:\Program Files (x86)                                                                                                                                      
ProgramW6432                   C:\Program Files                                                                                                                                            
PSModulePath                   C:\Users\Daniel\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules;C:\Prog...
PUBLIC                         C:\Users\Public                                                                                                                                             
PyCharm Community Edition      C:\Program Files\JetBrains\PyCharm Community Edition 2019.2.4\bin;                                                                                          
SystemDrive                    C:                                                                                                                                                          
SystemRoot                     C:\Windows                                                                                                                                                  
TEMP                           C:\Users\Daniel\AppData\Local\Temp                                                                                                                          
TMP                            C:\Users\Daniel\AppData\Local\Temp                                                                                                                          
USERDOMAIN                     LP70                                                                                                                                                        
USERDOMAIN_ROAMINGPROFILE      LP70                                                                                                                                                        
USERNAME                       Daniel                                                                                                                                                      
USERPROFILE                    C:\Users\Daniel                                                                                                                                             
windir                         C:\Windows 
#>

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

Python có thể chạy các lệnh PowerShell không?

Có thể chạy PowerShell từ bên trong python bằng quy trình con. run() và chỉ định powershell. đường dẫn exe .

Tập lệnh PowerShell có thể chạy trong dòng lệnh không?

Có thể chạy các tệp thực thi từ bất kỳ trình bao dòng lệnh nào, như PowerShell . Điều này bao gồm các tệp tập lệnh có thể yêu cầu các trình bao khác hoạt động bình thường. Ví dụ: nếu bạn chạy tập lệnh bó Windows (. cmd) trong PowerShell, PowerShell chạy cmd. exe và chuyển vào tệp bó để thực thi.

Làm cách nào để cài đặt Python PowerShell?

Cài đặt Python trên Windows .
Bước 1. Tải xuống. Chuyển đến con trăn. org/tải xuống/windows. .
Bước 2. Mở trình cài đặt Python. .
Bước 3. Xác minh Python được cài đặt qua PowerShell. .
Bước 4. Cập nhật cài đặt PowerShell. .
Bước 5. Tạo thư mục Dev. .
Bước 6. Cập nhật Pip. .
Bước 7. Tạo môi trường ảo. .
Bước 8. Cài đặt bất kỳ Gói Python nào