PowerShell筆記:powershell和服務器管理器

   

服務器管理器提供了一組 Windows PowerShell cmdlet 和一個命令行工具 ServerManagerCmd.exe,用於在運行 Windows Server® 2008 R2 的計算機上自動部署角色和功能。

您可以使用 Windows PowerShell cmdlet 或 ServerManagerCmd.exe 來安裝和刪除角色、角色服務和功能。服務器管理器 cmdlet 和 ServerManagerCmd.exe 可以顯示計算機上已安裝的以及可安裝的所有角色、角色服務和功能的列表。

ServerManagerCmd.exe已被windows棄用,後續版本可能不會支持該工具,轉而提供powershell cmdlet來管理服務器角色和功能。

Windows PowerShell 和服務器管理器

Cmdlet(發音爲 command-lets)是 Windows PowerShell 2.0 附帶的內置命令行工具,默認情況下它作爲 Windows Server 2008 R2 的一部分安裝。有關 Windows PowerShell 以及 cmdlet 如何工作的詳細信息,請參閱 Windows PowerShell 的“入門”指南。若要打開“入門”,請依次單擊「開始」“所有程序”“附件”Windows PowerShell 2.0“文檔”,打開您的區域設置所對應的文件夾,然後雙擊 GettingStarted.rtf

若要運行任何與服務器管理器有關的 Windows PowerShell cmdlet,您必須使用提升的用戶權限運行 Windows PowerShell。爲此,請依次單擊「開始」“所有程序”“附件”Windows PowerShell,右鍵單擊 Windows PowerShell 快捷方式,然後單擊“以管理員身份運行”。在使用服務器管理器 cmdlet 之前,還必須先將服務器管理器模塊加載到每個新的 Windows PowerShell 會話中。若要執行此操作,請在使用提升的用戶權限打開的 Windows PowerShell 會話中,鍵入 Import-Module Servermanager,然後按 Enter。

以下三個 cmdlet 允許您使用 Windows PowerShell 安裝、刪除或查看有關可用角色的信息。有關如何使用其中任一 cmdlet 的詳細信息,請在 Windows PowerShell 會話中,輸入 Get-Helpcmdlet_name-full,其中 cmdlet_name 表示以下值之一。

  • Add-WindowsFeature

     
  • Get-WindowsFeature

     
  • Remove-WindowsFeature

默認情況下,Windows PowerShell 模塊和管理單元不在 Windows PowerShell 會話中加載。

以下過程介紹如何啓動 Windows PowerShell 會話並在默認情況下加載所有模塊和管理單元。

啓動 Windows PowerShell 以便加載所有 Windows PowerShell 模塊和管理單元的步驟
  • 右鍵單擊任務欄中的 Windows PowerShell 圖標,然後單擊“導入所有模塊”

另外在管理工具中發現windows powershell modules工具,使用管理員賬戶運行後同樣也會導入所有模塊。

Powershell 擴展閱讀:

1. PowerShell管理單元(Snap-in): Windows PowerShell管理單元是被編譯成DLL文件的.NET程序,包括提供程序、cmdlet和函數。Windows PowerShell包含一些內置的管理單元,同時我們也可以自己手動添加自己寫的管理單元 

Windows PowerShell V2內置管理單元包括:Microsoft.PowerShell.Core, Microsoft.PowerShell.Host, Microsoft.PowerShell.Management, Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility, Microsoft.PowerShell.Diagnostics, Microsoft.PowerShell.WSMan.Management

查看計算機中的管理單元:get-pssnapin

查看每個Windows PowerShell提供程序所屬的管理單元:get-psprovider | format-list name,pssnapin

查看某個管理單元中的cmdlet:get-command -module <snap-in_name>

對於內置的管理單元,每次啓動Windows PowerShell時會被自動添加到會話中來。而對於我們自己寫的或者從別的地方得到的管理單元,則需要首先註冊這些管理單元然後再將他們添加到會話中來,"get-pssnapin -registered"命令可以用來查看你係統中註冊過的管理單元,那麼如何來註冊管理單元呢?可以參考http://msdn.microsoft.com/en-us/library/ms714644(VS.85).aspx 

 

將一個管理單元添加到當前對話:add-snapin <snap-in_name>

將一個管理單元移除出當前對話:remove-snapin <snap-in_name>

將管理單元添加到當前對話中後,管理單元只在當前會話中可用,如果我們想要在將來的會話中繼續使用此管理單元,我們需要將它添加到配置文件中,首先將管理單元保存到一個控制檯文件(.psc1),然後在需要使用此管理單元時用這個控制檯文件啓動PowerShell。

 

保存到控制檯文件:export-console <consolefile_name>

使用控制檯文件啓動PowerShell:powershell.exe -psconsolefile <consolefile_name>

2. Windows PowerShell提供程序(providers)提供的數據顯示在一個驅動器中,可以像瀏覽硬盤一樣瀏覽該驅動器,並且允許查看、查找和管理相關的數據。

PowerShell內置的提供程序:Alias, Certificate, Environment, FileSystem, Function, Registry, Variable, WSMan.

列出所有可用的提供程序: get-psprovider

獲得一個提供程序驅動器的所有屬性:get-psdrive <drive_name(e.g.hklm)> | format-list *

查看驅動器的內容:get-childitem <drive_name>:\childitem

舉例:get-childitem hklm:\software

進入驅動器:set-location <drive_name>:

3. Windows PowerShell模塊(module): 模塊包含了若干Windows PowerShell命令。比如cmdlets,提供程序(Providers),函數(functions),變量(variables),別名(aliases)。

Windows PowerShell模塊是獨立的、可重用的執行單元,可以包括以下內容:

  • 通過.PSM1文件調用的腳本函數;
  • 被編譯成.DLL文件並且通過.PSD1調用的.NET組件;
  • 通過.DLL調用的PowerShell管理單元;
  • 在.PS1XML文件中描述的自定義視圖和數據類型。

使用模塊需要執行以下任務:

  1. 安裝模塊

如果當前用戶沒有模塊文件夾爲當前用戶創建模塊文件夾:new-item -type directory -path $home\Documents\WindowsPowerShell\Modules

將整個要安裝的模塊文件夾copy到上面的文件夾中

我們可以將模塊安裝到任意文件夾,但爲了便於管理,建議安裝到默認文件夾。

獲取已安裝的模塊:get-module -listavailable

獲取當前會話中導入的模塊:get-module

  1. 將模塊導入到Windows PowerShell會話

導入默認模塊路徑的模塊:import-module <module_name>

導入非默認路徑的模塊時要將模塊的完整路徑輸入,例如,導入c:\ps-test文件夾下的TestModules模塊:

Import-module c:\ps-test\TestModules

將所有模塊導入到當前會話中:

對於Windows7和Windows Server 2k8 R2,只需要右擊任務欄上的powershell圖標,然後選擇"Import all modules"即可

對於其他版本的Windows操作系統,可以這樣導入:get-module -listavailable | import-module

移除模塊:remove-module <module_name>

  1. 找到模塊添加的命令

Get-command -module <module_name>

  1. 使用模塊添加的命令

模塊默認路徑包括兩種,system和current user

System: $pshome\Modules

(%windir%\System32\WindowsPowerShell\v1.0\Modules)

Current user: $home\Documents\WindowsPowerShell\Modules

(%UserProfile%\Documents\WindowsPowerShell\Modules)

- or -

$home\My Documents\WindowsPowerShell\Modules

(%UserProfile%\My Documents\WindowsPowerShell\Modules)

查看模塊默認路徑: $env:psmodulepath

添加模塊默認路徑:$env:psmodulepath = $env:psmodulepath + ";<path>"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章