Hướng dẫn sử dụng lênh psexec trong Windows

Chào các bạn , bài trước mình đã cùng các bạn trở lại tuổi thơ với lệnh dos và game 8bit thời Y2K :P. Hôm nay mình sẽ cùng các bạn tìm hiểu về  các câu lệnh Dos huyền thoại nhưng không phải trên máy mình nữa mà sẽ sử dụng trên 1 máy khác trên mạng LAN.

Ví dụ trong trường hợp các bạn cần xem thông tin của 1 máy tính user trong công ty (dĩ nhiên chúng ta đã có các công cụ để quản trị như GLPI.Mình đã có bài viết chi tiết về cách cấu hình và triển khai GLPI🙂

Tuy nhiên trong 1 số trường hợp máy tính chưa Join domain or chưa được apply vào GLPI thì Psexec sẽ là 1 công cụ cực kì hữu ích để chúng ta thu thập các thông số trên máy Users nhé 🙂

Hơn thế nữa psexec còn giúp ta chạy các file .bat , .vbs… trên máy user hoặc hàng loạt users 1 lúc chỉ dựa vào list IP(s). Vậy …..

I. PSexec là gì

Logo-CMD-640x360

Khác với Telnet hay chương trình điều khiển máy từ xa như Remote Desktop  hay 1 cái tên cực đình đám là Teamview yêu cầu phải cài đặt chương trình tại máy client (máy người dùng) mới có thể remote vào được ,với psexec bạn hoàn toàn có thể remote vào máy người dùng trong khi họ vẫn đang sử dụng máy tính bình thường và không hề hay biết.

Psexec là 1 công cụ nhanh và mạnh sử dụng để chạy cửa sổ command-prompts trên máy remote và sử dụng các lệnh Dos để thu thập thông tin như IPconfig hoặc wmic ….

II. Cài đặt PSExec

  1. Download Psexec tại trang của microsoft (https://technet.microsoft.com/en-us/sysinternals/psexec.aspx) hoặc tại đây
  2. Giải nén file PSTools.zip và copy tất cả file bên trong (Ctr+A 27 items) vào đường dẫn C:\Windows\System32 hoặc bất cứ đầu cũng được .Để sử dụng Psexec thì ta chuyển con trỏ lệnh về thư mục mà đã copy Pstools ví dụ như trong hình bên dưới.

0

Như hình trên mình dùng lệnh psexec để truy cập vào cửa sổ CMD tại máy có địa chỉ là 192.168.2.55

0

Note: Để có thể sử dụng 100% tính năng của psexec thì các bạn chạy CMD với quyền Admin nhé 🙂

III. Sử dụng PsExec

Usage: psexec [\\computer[,computer2[,…] | @file]][-u user [-p psswd][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,…] cmd [arguments]

Haha ,đọc cái cấu trúc này đau đầu nhỉ , mình sẽ đi vào giải thích từng biến và cách dùng nhé 🙂

-a   cho phép chương trình chạy trên máy remote chạy trên bao nhiêu CPU – mặc định là 1 , nếu muốn chạy trên CPU 2,3 thì ta set “-a 2,3”

1.png

0.png

Mình xin lan man thêm 1 xí về vụ -a (viết tắt của  Affinity) , Processor Affinity là 1 tính năng cho phép người dùng được phép chọn CPU nào sẽ đảm nhiệm chạy chương trình.Chắc các bạn sẽ hỏi , mình bỏ tiền ra mua máy mạnh , máy đắt tiền để sử dụng đa nhiệm ,đa luồng ,đa xử lý sao lại phải giới hạn lại CPU. 🙂

Đúng là mặc định Windows sẽ sử dụng tất cả các CPU ( All Processors) để chạy các chương trình , tuy nhiên ,các chương trình cũ được thiết kế chỉ chạy trên 1 hoặc 2 CPU đâu đó hoặc khi nào đó sẽ xảy ra xung đột gây cho CPU bỗng dưng lên 100% .hahaha

Hoặc đơn giản là sẽ có 1 vài chương trình sẽ lỗi liên tục và crashing ,chỉ có 1 cách là cho nó chạy trên 1 CPU mới hết

0

Dĩ nhiên các chương trình mới bi giờ đều được thiết kế cho việc chạy đa nhiệm nên các bạn không phải lo nhé 🙂

Vài giây lạm bàn về giá trị -a , nói túm lại là giá trị này chẳng bào giờ xài tới tại thời điểm hiện tại ( most applications you run these days have been designed with multi-core processors in mind and will work with the operating system to distribute their operations as evenly as possible across all the available cores.) hoặc chí ít là với psexec nhé .hehehhe

-c  Viết tắt của Copy -Lệnh này sẽ copy 1 chương trình (.exe) vào máy remote – Chú ý là nó chỉ copy vào thôi nhé chứ không có chạy nhé 🙂 –  Sau khi thực hiện lệnh thành công, tại máy remote sẽ xuất hiện Application được Copy (Xem trong Task Manager).File .exe này sẽ được Paste vào C:\Windows

1

 

Cấu trúc lệnh :

0

Lệnh trên sẽ Copy application từ máy Admin (copy putty.exe) vào C:\Windows trong máy Remote

0.png

Note : -c -f :Copy kể cả khi file đã tồn tại

1.png

 -c -v : Chỉ copy các version cao hơn

-d Nếu thêm giá trị -d vào câu lệnh thì không cần phải chờ chương trình tại máy remote tắt mới có thể mở tiếp được mà có thể mở liên tục 😛

0

Ví dụ cho dễ hiểu nhé mọi người 😀

Mình muốn copy 2 executive program vào máy remote , 1 là putty.exe và  2 là unikey.exe

Nếu như mình copy KHÔNG có -d thì sau khi copy putty.exe , psexec sẽ treo tại cửa sổ copy như hình dưới và chỉ trả về con trỏ lệnh khi tắt Process putty tại máy remote

0.png

0.png

Nếu thêm giá trị -d thì mình có thể thao tác liên tục , tức là copy nhiều hơn 1 file .exe vào máy remote mà không cần phải chờ process của chương trình cũ kết thúc 🙂

0

-e  Does not load the specified account’s profile – Không tải profile của 1 account nào đấy – với những bản psexec nhỏ hơn v1.80 thì -e có tác dụng ngược lại là sẽ tải profile của 1 specified account

-f Copy the specified program to the remote system even if the file already exists on the remote system. – Copy file kể cả nó đã tồn tại 🙂

1

-i Run the program so that it interacts with the desktop of the specified session on the remote system. If no session is specified the process runs in the console session – Lệnh này cho phép hiện chương trình trên màn hình máy remote (Chỉ hiển thị với những chương trình sử dụng giao diện graphic (GUI) – notepad , word ,control panel…là những chương trình GUI) – nếu không có -i  thì chương trình sẽ chạy trong task manager nhé.

Cấu trúc lệnh :

psexec  \\192.168.x.x -s -d – i notepad –>  Mở chương trình Notepad tại máy remote với accout Local System

Hoặc

psexec \\PC-01 -u admin – p P@ssword -i calc –>  Mở chương trình Máy tính (Calculator) với user local admin mật khẩu P@ssword

Bên dưới là 1 ví dụ chi tiết để các bạn dễ hình dung hơn nhé – Enlish 😛

    • local: the machine where you type in the psexec command line.
      local: psexec \\remote -u username -p password -i -d c:\folder\myapp.exe

 

    • remote: the machine where psexec will launch myapp.exe, \\remote in your example.

 

    • console application: any application that has not got a GUI, a graphical user interface. cmd.exe is a console app. psexec is a console app. telnet is a console app. ftp is a console app.

 

  • GUI application: any application that has got a GUI, graphical user interface. Notepad is a GUI app, Word is, Excel is.

Now, if myapp.exe is a console app and you launch it on \\remote using psexec, the process will be started on \\remote, but the output will be shown on your local machine, i.e. where you typed the psexec command.

If myapp.exe is a GUI app. and you launch it on \\remote using psexec, the process will be started on \\remote, but no GUI will be visible at all, neither on \\remote, nor on your local machine.

If myapp.exe is a GUI app. and you launch it on \\remote using psexec with the -i switch, the process will be started on \\remote, and the GUI will be visible on \\remote.

-h  Run with the account’s elevated token, if avaiable. (Vista or Higher) –> Tương đương với Run as Administrator ; elavated token nghĩa là full token and not the restricted/filtered token. (override UAC)

0

Câu lệnh trên cho phép enable Remote Desktop Service trên máy Remote , đòi hỏi thay đổi giá trị Register ( yêu cầu quyền admin) – Nếu không có -h  chúng ta sẽ nhận lỗi Access is denied như hình nhé 🙂

-l  Run process as limited user (strips the Administrators group and allows only privileges assigned to the Users group). –>  Chạy chương trình với giới hạn permission (quyền User)

1.png
Chạy Registry với quyền User (-l)

0

Không có quyền Edit Registry –> Nếu bỏ -l đi các bạn mở Registry và Edit bình thường nhé 🙂

-n Specifies timeout in seconds connecting to remote computers. –> Định thời gian timeout tới máy remote

1
Set timeout là 1 giây

-p Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password. –>  Nhập password của User dùng để login máy remote

0

-r Specifies the name of the remote service to create or interact with.

-s  Run the remote process in the System account. –> Chạy dưới quyền SYSTEM

1.png

11111

-u   Specifies optional user name for login to remote computer.–> đặt -u trước user login

Gía trị -u bắt buộc phải đi với -p với admin account nhé 🙂

1

-v  Copy the specified file only if it has a higher version number or is newer on than the one on the remote system. –> Khỏi vietsub nhé 🙂

-w Set the working directory of the process (relative to remote computer) –> chỉ định thư mục psexec sẽ thực thi ,mặc định psexec sẽ chép vào thư mục Windows của máy remote

-x Display the UI on the Winlogon secure desktop (local system only). –> Winlogon Secure Desktop là màn hình lúc khởi động Window đăng nhập , tại màn hình này sẽ không có gì ngoài 2 box nhập tên đăng nhập và password.Với giá trị -x ,chúng ta có thể “run something” trong Winlogon secure desktop

Ví dụ:  If you run the following command and then press ctrl+alt+del or logoff, you’ll still have a console with the ability to start other commands:

psexec -x -d -s cmd

 -priority Specifies -low, -belownormal, -abovenormal, -high or
-realtime to run the process at a different priority. Use
-background to run at low memory and I/O priority on Vista.

Ví dụ: psexec -d -i -low cmd

computer  Direct PsExec to run the application on the remote
computer or computers specified. If you omit the computer
name PsExec runs the application on the local system,
and if you specify a wildcard (\\*), PsExec runs the
command on all computers in the current domain.

Ở trên mình đã chạy nhiều ví dụ về giá trị này ,đây chính là máy remote và được chỉ đinh bằng \\ ( ví dụ : psexec \\VNCOMP01 -s -d -i regedit ) – nếu muốn chạy với tất cả máy tính trong domain thì  sử dụng wildcard \\*

@file PsExec will execute the command on each of the computers listed
in the file.

Ví dụ :

Mình tạo 1 file .bat có tác dụng cài đặt 1 phần mềm (bắt buộc định dạng .msi) nhé trên máy remote

Tạo 1 file notepad và lưu dưới dạng .BAT

Trong file này ta copy đoạn code sau:

C:\PSEXEC\PsExec64.exe @C:\PSEXEC\SoftwareInstall.txt -h -u microsoft\nmd -p P@ssw0rd msiexec.exe /i “\\192.168.2.57\psexec\SVN.msi” /quiet /norestart
pause

Các bạn để ý tới đoạn @C:\PSEXEC\SoftwareInstall.txt –> psexec sẽ đọc file txt có tên là SoftwareInstall nằm trong đường dẫn C:\PSEXEC .Trong file .txt có các tên máy tính(hoặc IP) mà chúng ta muốn cài đặt chương trình.

cmd Name of application to execute.

 -accepteula This flag suppresses the display of the license dialog.

Ngăn hiển thị các hộp thoại licenese

-nobanner Do not display the startup banner and copyright message.

Nếu thêm giá trị này thì khi chạy lệnh sẽ không thấy 2 dòng message như bên dưới

0

Trên đây mình đã trình bày cơ bản về các giá trị để sử dụng lệnh psexec – lệnh này dùng với mục đích quản trị chứ không nên để phá users nhé 😛 – lệnh chỉ sử dụng khi có  quyền admin truy cập vào máy remote.

Bài sau mình sẽ hướng dẫn các bạn sử dụng psexec để cài phần mềm ,thay đổi giá trị registry ,chạy file .bat ,chạy file .vbs trên máy remote nhé 🙂

Chúc các bạn thao tác thành công ❤ ❤ ❤

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *