熱點推薦:
您现在的位置: 電腦知識網 >> 網絡技術 >> 正文

Windows shell 腳本可以加速網絡管理

2022-06-13   來源: 網絡技術 

  普遍使用的Windows 腳本語言和平台就包括Windows shell 腳本Visual Basic 腳本(VBS)和Jscript這些我在以前的一篇文章中討論過下面我們將對Windows shell 腳本與網絡管理相關的部分進行深入的了解該討論的目的是使大家對使用Windows命令行有一個基本的了解包括參數和轉換例如下面的命令
  del myfiletxt /f
  
  
  
  在這裡del是命令myfiletxt是參數(其為del命令提供了需要的信息)還有/f轉換它修改了該命令使其強迫只讀文件的刪除
  
  登錄腳本
  最普遍用到的shell 腳本可能就是登錄腳本了一個登錄腳本被用作在登錄的時間為一個用戶配置Windows環境而且通常專門用於一組用戶舉個例子來說金融組的成員可能自動映像網絡驅動器到金融網絡共享文件夾而行銷組可能自動映像網絡驅動器到行銷網絡共享文件夾
  
  為了實現這個需要為每一個用戶或成員組創建一個腳本然後復制到合適的服務器位置(該位置基於Windows版本不同而不同)在Windows NT腳本文件通常放在C:\Winnt\System \Repl\Export\Scripts(或者是Import這依賴於你配置時復制的位置)然後你在用戶說明屬性對話框中指向那個文件
  
  當使用活動目錄時你經由一個群組策略(Group Policy)配置注冊腳本首先將腳本文件復制到Sysvol子目錄圖A顯示了在哪裡訪問這個子文件夾
   
  圖A
  在Sysvol目錄下找到 Scripts文件夾
  
  注意你也可以選擇用於下網啟動和關閉的腳本然後你可以為包括那個腳本的給定容器直接編輯組策略對象如圖B所示
  
  
  圖 B
  在活動目錄中一個特定容器中編輯腳本
  登錄腳本中的命令
  在一個腳本中最常用的命令是NET USE它正好是許多可用的NET命令的一個子集
  
  
  
  NET USE命令允許你建立驅動器映射當在一個登錄腳本中使用該命令時它可以將該驅動映射到一個特定用戶或組用戶例如假設行銷部門需要一個驅動器映射到Server上的行銷文件夾另一個驅動映射到Server上的管理員文件夾而且再需要一個驅動映射到Server上的共享home folder中的個人用戶的home文件夾以下是一個例子
  
  NET USE F: \\server\marketing PERSIST:NO
  NET USE G: \\server\admin PERSIST:NO
  NET USE H: \\server\home folder\%username% PERSIST:NO
  
  每行末的關鍵字PERSIST表示在下一次啟動的時候是否重新連接驅動器映射通常你不想讓這種情況發生原因是另一個用戶可能需要不同的驅動映射
  
  你也應該注意第三行首先需要引用標記第二使用環境變量%username%當一個用戶登錄時用戶名被臨時存儲並可以被Windows shell使用(為了驗證這一點你可以運行echo %username命令這將輸出你的登錄名)如果每一個用戶擁有與那個人的登錄名相同的文件夾你可以使用那個自動映射到根文件夾
  
  %username%變量是由Windows自動創建並且將經常用到的幾個環境變量之一你可以通過在命令行使用set類型設置而看到一個完整的列表你也可以用這個命令創建你自己的變量要想搞清楚怎麼做可以設置set /?來進行查看
  
  Windows命令
  要想看到一個完整的命令列表以及關於如何使用它們的信息可以參考Windows Help如果你使用Windows 系統點擊開始|幫助在搜索標簽裡輸入command reference選擇你要顯示的主題雙擊命令參考主頁在Windows NT中點擊開始|幫助在搜索標簽裡輸入command然後在Pick A Topic下選擇命令索引並點擊顯示按鈕
  
  另外一個有用的登錄腳本命令是NET TIME它將使得一個網絡上的時間同步於服務器上的時間在該命令裡你可以使用一些轉換而且你也可以在Windows Help中檢查該命令如下是最簡單的使用NET TIME
  NET TIME \\timesvr /SET /YES
  
  這個告訴該計算機與名稱為timesvr的服務器的時間同步/YES轉換指示它強制同步即使被命名的服務器不是一個時間源服務器
  
  在以後的文章裡我將討論一些在腳本中有用的編程結構包括條件處理這裡看到的是條件處理的大體框架
  
  如果Novell NetWare操作系統中的管理員是使用狀態IF MEMBER OF的一定組的成員那麼該管理員將樂忠於告訴登錄腳本做什麼盡管在Windows腳本中沒有這樣的狀態可用但是有兩種可能的工作區這要依賴於你在管理一個Windows NT區域還是用活動目錄管理一個Windows
  
  Windows NT Resource Kit包含一個名叫IFMEMBEREXE的工具這個可以作為NetWare IF MEMBER OF被用於相同的目的不過它的使用相當的復雜仍需要另一個稱作為ERRORLEVEL的架構以下介紹其工作原理讓我們假設登錄的用戶既是行銷組的成員又是管理員組的成員你想要設置一塊只有行銷管理員才可以訪問的共享區域首先你要包含如下命令行
  
  IFMEMBER marketing managers
  
  IFMEMBER工具(假設其處於一個搜索路徑中)將檢查所有組中的成員然後退出並將用戶的特定變量ERRORLEVEL的值設定為包含該用戶的組數目在這個例子中那個數目應該是因此整個過程如下所示
  
  IFMEMBER marketing managers
  IF NOT ERRORLEVEL EXIT
  NET USE J: \\SERVER\MKTGMGR /PERSIST: NO
  
  如果該用戶是兩個組的成員ERRORLEVEL中存的值將是如果值不是腳本將執行完畢但是如果值是它將執行下面的狀態
  
  IFMEMBEREXE也可以用於Windows 環境中但是如果你使用活動目錄你會另作選擇不是在登錄腳本中的參考組你可能按照以上組相同行設計你的組織單元這樣你可以對應於每一個OU創建組策略對象同時該OU擁有一個專門登錄腳本不必使用IFMEMBER工具
  Shell腳本用於其他用途
  就像我以上提到的設計登錄腳本用於每一次用戶登錄該網絡時被調用然而例如假設你的組織剛剛利用地理信息系統(GIS)完成了工作任何GIS包括大量的形狀類型的文件和圖像通常位於一個復雜的目錄數據結構中如果被安裝於本地它們將最好地運作因此你決定復制這些文件將完整的目錄從一個網絡共享保存到每一個工作站的本地硬件驅動器上
  
  
  
  當然你也可以打開DOS命令行手工進行測試顯然這將大大簡化寫一個包含每一個需要考慮的命令的腳本
  
  使用COPY命令或是更通用的XCOPY命令你可以創建一個腳本完成該工作復制它到一個可移動的介質上如軟盤並且通過敲擊一個簡單的命令在每一個位置運行該腳本好處有兩點
  
  
  這將節省你的時間因為你不必在每個工作站敲擊每個命令
  這將有助於避免由於誤敲擊一個命令或路徑名而導致的錯誤
  最好的實踐方法
  當你寫Windows shell 腳本時你應該記住以下幾點
  
  
  在你將你的腳本用於產品化階段之前一定要進行測試
  一直要文檔化你的腳本即使它們非常簡單當一個腳本遇到關鍵字REM它將忽略那一行因此你可以使用該關鍵字為你的腳本增加注釋至少你應該包括該腳本的目的日期和作者名字記住對你來說很明顯的東西對別人來說可能不是這樣而且過了一年以後你也會不清楚了
  記住當你的腳本運行時其中的每一個命令行將顯示在屏幕上除非是你使用命令@ECHO OFF改變該特性
  繼續
  要想熟練掌握Windows shell 腳本你需要了解可用的命令行及其語法你可以參考Windows Help來對命令進行學習對每一個命令有一個總體認識並找出可以幫助你完成任務所需的那些命令每一個命令有一個相關主題連接通常包括兩個連接一個提供使用該命令的例子一個是關於該命令更多的注釋
  
  此外你應該盡可能多得不斷嘗試使用不同命令和選項直至對此精通熟練不要擔心犯錯這是了解各個變量最好的方法
  

From:http://tw.wingwit.com/Article/Network/201311/29977.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.