PSTools 是由作者 Mark Russinovich 在 Microsoft Learn 發佈的 Windows 遠端管理公用程式
https://learn.microsoft.com/zh-tw/sysinternals/downloads/pstools
PsTools 套件中包含的工具 (可以套件形式下載) 包括:
1.擁有遠端主機的管理者權限
例如我先在遠端主機先建立一個帳號 Test_1
C:\Windows\System32>net user Test_1 XXXXXX /add
命令已經成功完成。
再將使用者加入管理者群組
C:\Windows\System32>net localgroup administrators Test_1 /add
命令已經成功完成。
2.遠端主機有開啟檔案及印表機共用功能
按開始選單→設定→網路和網際網路→進階網路設定→進共用設定
然後找到檔案及印表機共用,確認它是開啟的。
應用1:在本機執行遠端主機的cmd.exe
D:\Downloads\PSTools>psexec \\hp01 -u Test_1 -i -p XXXXXX cmd
// ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^
// 遠端電腦名稱↑ ↑遠端使用者名稱/密碼 ↑要執行的程序
// 其中 -i 是指使用者帳號要用遠端主機上的使用者帳號
// 其中 -u 是遠端電腦上的使用者帳號 -p 為該帳號對應的密碼
出現上圖的 C:\Windows\System32>
就表示你已經登入了遠端電腦,並可以使用 cmd支援的指令來控制遠端電腦
目前唯一遇到的問題是"中文"檔名(目錄名)
我們輸入的中文指令透過 psexec 傳輸過後中文會變成亂碼
造成遠端電腦系統無法理解我們的指令,這部分沒有解法
但如果我們是只要讀取檔案可以利用 net share 指令創造一個共享資料夾
net share AAA=D:\ /grant:administrator,full
// ^^^ ^^^ ^^^^^^
// 共享名稱↑ ↑共享目標 ↑可以存取的使用者名稱,full 完全控制權限
檔案讀取完畢後,記得再把共享資料夾復原回去
net share AAA /delete /y
psexec 支援的命令
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>][-g n][-a n,n,...][-accepteula][-nobanner] cmd [arguments]
參數描述
-a
以逗號分隔可以執行應用程式所在的處理程序,其中 1 是編號最低的 CPU。 例如,若要在 CPU 2 和 CPU 4 上執行應用程式,請輸入:"-a 2,4"
-c
將指定的可執行檔複製到遠端系統以執行。 如果您省略此選項,應用程式必須位於遠端系統上的系統路徑中。
-d
不要等待處理程序終止 (非互動式)。
-e
不要載入指定的帳戶設定檔。
-f
複製指定的程式,即使檔案已存在於遠端系統上亦然。
-i
執行程式,使其與遠端系統上指定工作階段的桌面互動。 如果未指定任何工作階段,處理程序就會在主控台工作階段中執行。 嘗試以互動方式執行主控台應用程式時,此旗標為必要 (使用重新導向的標準 IO)。
-h
如果目標系統是 Vista 或更新版本,則會使用帳戶提升權限的權杖執行處理程序 (如果有)。
-l
以有限的使用者身分執行處理程序 (移除系統管理員群組,並僅允許指派給使用者群組的權限)。 在 Windows Vista 上,處理程序會以低完整性執行。
-n
指定連線到遠端電腦的逾時 (以秒為單位)。
-p
指定使用者名稱的選擇性密碼。 如果您省略此項目,則會提示您輸入隱藏的密碼。
-r
指定要建立或互動的遠端服務的名稱。
-s
在系統帳戶中執行遠端處理程序。
-u
指定選用的使用者名稱以登入遠端電腦。
-v
只有當指定的檔案版本號碼高於遠端系統上的版本號碼或更新時,才複製指定的檔案。
-w
設定處理程序的工作目錄 (相對於遠端電腦)。
-x
在 Winlogon 安全桌面上顯示 UI (僅限本機系統)。
-priority
指定 -low、-belownormal、-abovenormal、-high 或 -realtime,以不同的優先順序執行處理程序。 使用 -background 在 Vista 上以低記憶體和 I/O 優先順序執行。
computer
指示 PsExec 在指定的一或多部遠端電腦上執行應用程式。 如果您省略電腦名稱,PsExec 會在本機系統上執行應用程式,而且如果您指定萬用字元 (\\*),PsExec 會在目前網域中的所有電腦上執行命令。
@file
PsExec 會在檔案中列出的每部電腦上執行命令。
cmd
要執行的應用程式名稱。
arguments
要傳遞的引數 (請注意,檔案路徑必須是目標系統上的絕對路徑)。
-accepteula
此旗標會隱藏授權對話方塊的顯示。
-nobanner
此旗標會隱藏啟動橫幅和著作權訊息。