Windows 系統環境變數的絕佳應用

在 Sysinternals Suite 中有些工具是在 Command Line 模式下執行,要方便使用前大多數的人都會使用 “Command Here” 這個技巧對 Sysinternals Suite 的目錄按滑鼠右鍵進入。而在撰寫批次檔或 PowerShell 時TigerLin 常會用到 psShutdown 與 psKill 這兩個工具,在使用的時候則開始思索一個問題:能不能讓這些工具就像 cmd.exe 與 netstat 一樣,不管在哪個目錄都可以執行,而不用這樣切換來切換去, CD 指令打到手都痠了...

TigerLin 經常需要管理眾多的伺服器,手邊的工具林林總總加起來的種類也是很多的,而最常用的工具不外乎是微軟官方提供的 Sysinternals Suite 瑞士刀工具組,Windows 的 MIS 朋友們沒用過應該多少也都有聽過這套佛心級的工具 ^^b

Sysinternals Suite 中有些工具是在 Command Line 模式下執行,要方便使用前大多數的人都會使用 “Command Here” 這個技巧對 Sysinternals Suite 的目錄按滑鼠右鍵進入。而在撰寫批次檔或 PowerShell 時TigerLin 常會用到 psShutdown 與 psKill 這兩個工具,在使用的時候則開始思索一個問題:能不能讓這些工具就像 cmd.exe 與 netstat 一樣,不管在哪個目錄都可以執行,而不用這樣切換來切換去, CD 指令打到手都痠了。

在經歷幾次失敗的嘗試後,終於找到了一個很細微但卻可以幫助系統管理人員增進效能的設定 –> Windows 系統環境變數 。這個地方說實在的,TigerLin 也很少來瀏覽,大多都是要設定 TEMP 目錄才會到裡面去。沒想到這種越不起眼的地方就是越能增進效率的關鍵啊 XD

首先,為了驗證系統環境變數是有用的,這裡先開啟一個 CMD 視窗,輸入 pskill (Sysinternals Suite 中的一個工具) 這個指令來執行一次看看:

image

跟預期的一樣,果然是沒辦法執行的,讓我們來設定系統環境變數試試看~請至 [我的電腦] -> [內容] –> [進階] -> [環境變數]。這裡要注意的變數有兩種,一種是針對使用者帳戶設定的使用者變數,程式設計來說就是 “區域變數”,只對這個使用者有效,換成別的帳戶登入是沒用的;而系統變數則是 "全域變數",設定之後每個帳戶都可使用,但只有系統管理員能設定。現在我們要對系統變數中的 “Path”進行設定:

image

按下編輯後會發現已經有設定了幾個路徑,其中都是以分號隔開的。在最後一個路徑後面加上分號隔開後,後面就可以加上自己的路徑了 (TigerLin 將工具安裝至 C:\Program Files\Sysinternals 中,以此路徑為範例):

原始設定 -- %SystemRoot%\system32;%SystemRoot%
變更設定 -- %SystemRoot%\system32;%SystemRoot%;C:\Program Files\Sysinternals

設定完畢後,將 CMD 關閉再開啟新的 CMD 視窗,再輸入一次剛剛的指令:

image

看~這樣無論在哪個目錄都可以輕鬆使用自己常用的 CMD 工具~不用再打 “CD #GRFG$%^DW” 打到手殘了~ XD
本文至此就結束了嗎?當然還沒,還有一個技巧還沒講到~先別急先別急~請繼續看下面~

 

密技!快速佈署設定系統環境變數設定值
文章開頭 TigerLin 有提到在下經常需要管理眾多的 SERVER,無論是有 AD 或沒 AD 環境。以 100 台 Windows 2003 來說,一台一台用遠端桌面連線,重複上述的步驟,至少一天的工作天就要消耗了。基於 「Smart work」的出發點,當然不能這樣土法煉鋼,經過 Google 指點後找出系統環境變數的設定值都是儲存在... Registry 中的 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]

image 

一樣是系統環境變數,字串會有「REG_SZ」「REG_EXPAND_SZ」的差別,其最大的差異在於前者為純文字路徑,後者和在路徑中有再包含了系統環境變數。以 “Path” 來說,該系統變數又包含了 “%SystemRoot%”這個變數,所以它的類型則為「REG_EXPAND_SZ」。

在設定好之後,可以將此區域的機碼匯出,編輯修改一下只保留 Path 這個主要要設定佈署的項目即可:
=============================== SysEnv.Reg 內容 ===============================

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
"Path"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,3b,00,25,00,\
  53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,3b,00,25,\
  00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,\
  53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,57,00,62,00,65,00,6d,\
  00,3b,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,00,\
  46,00,69,00,6c,00,65,00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,\
  00,66,00,74,00,20,00,53,00,51,00,4c,00,20,00,53,00,65,00,72,00,76,00,65,00,\
  72,00,5c,00,31,00,30,00,30,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,42,\
  00,69,00,6e,00,6e,00,5c,00,3b,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,\
  72,00,61,00,6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,4d,00,69,00,63,\
  00,72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,51,00,4c,00,20,00,53,00,\
  65,00,72,00,76,00,65,00,72,00,5c,00,31,00,30,00,30,00,5c,00,44,00,54,00,53,\
  00,5c,00,42,00,69,00,6e,00,6e,00,5c,00,3b,00,43,00,3a,00,5c,00,50,00,72,00,\
  6f,00,67,00,72,00,61,00,6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,4d,\
  00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,51,00,4c,00,\
  20,00,53,00,65,00,72,00,76,00,65,00,72,00,5c,00,31,00,30,00,30,00,5c,00,54,\
  00,6f,00,6f,00,6c,00,73,00,5c,00,42,00,69,00,6e,00,6e,00,5c,00,56,00,53,00,\
  53,00,68,00,65,00,6c,00,6c,00,5c,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,37,\
  00,5c,00,49,00,44,00,45,00,5c,00,3b,00,43,00,3a,00,5c,00,57,00,49,00,4e,00,\
  44,00,4f,00,57,00,53,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
  00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,50,00,6f,00,77,00,65,00,\
  72,00,53,00,68,00,65,00,6c,00,6c,00,5c,00,76,00,31,00,2e,00,30,00,3b,00,43,\
  00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,00,46,00,69,00,\
  6c,00,65,00,73,00,5c,00,53,00,79,00,73,00,69,00,6e,00,74,00,65,00,72,00,6e,\
  00,61,00,6c,00,73,00,00,00

 

 

 

 

 

============================= SysEnv.Reg 內容結束 =============================

接下來只要點兩下,確定要匯入機碼後,系統環境變數就完成了~利用 AD 佈署只要登入一下再登出即可馬上完成
非 AD 也只要點三下滑鼠->登出~怎麼樣都比慢慢的設定快多了 ^^b~

 

極重要注意事項!!必讀!!

  • 請勿在已上線的系統隨意以 REG 的方式變更系統環境變數,某些應用程式 (EX:SQL Server 2008 & Powershell) 也會變更 “Path”變數的內容。如用系統安裝初的設定直接匯入到上線的機器可能會有不可預期的後果。
  • 較安全的方法建議在新安裝系統時使用此技巧,如在上線 Server 使用則必須確保要具備正確的觀念。
  • 修改登陸檔本身就是種危險的行為,沒信心或不確定請千萬不要亂修改。否則輕則系統異常;重則服務中止,損失可是難以估計。

 

 

如果覺得這篇文章對你有所幫助,可以透過 Paypal 支持作者唷~