/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
PowerShell是一個跨平台(Windows、Linux和macOS)的自動化和配置工具/框架,一款專業的命令行腳本工具,它能與您現有的工具很好地配合,並針對處理結構化數據(如JSON、CSV、XML等)、REST API和對象模型進行了優化,PowerShell包括一個命令行shell,一個相關的腳本語言和一個處理cmdlets的框架。
您可輕易發現 Windows Powershell 的功能。例如,若要查找用於查看和更改Windows 服務的cmdlet 列表,執行:開始->運行->cmd,在命令行下輸入 PowerShell 進入 windows PowerShell,再輸入如下命令:
get-command *-service
在發現可完成任務的 cmdlet 之後,可以使用 Get-Help cmdlet 了解有關該 cmdlet 的詳細信息。例如,若要顯示有關 Get-Service cmdlet 的幫助,請鍵入:
get-help get-service
若要充分理解該 cmdlet 的輸出,則可通過管道將其輸出傳遞給 Get-Member cmdlet。例如,以下命令將通過 Get-Service cmdlet 顯示有關該對象輸出的成員的信息。
get-service | get-member
一致性
管理係統可能是一項複雜的任務,而具有統一接口的工具將有助於控製其固有的複雜性。然而,無論是命令行工具還是可編寫腳本的 COM 對象,在一致性方麵都乏善可陳。
Windows PowerShell 的一致性是其主要優點中的一項。例如,如果您學會了如何使用 Sort-Object cmdlet,則可利用這一知識對任何 cmdlet 的輸出進行排序。而無需了解每個 cmdlet 的不同的排序例程。
此外,cmdlet 開發人員也不必為其 cmdlet 設計排序功能。Windows PowerShell 為他們提供了框架,而該框架可提供基本的功能,並強製他們在接口的許多方麵保持一致。該框架雖然消除了通常會留給開發人員的某些選項,但作為回報,開發強健、易於使用的 cmdlet 的工作將更加簡單。
交互式腳本環境
Windows PowerShell 將交互式環境和腳本環境組合在一起,從而允許您訪問命令行工具和 COM 對象,同時還可利用 .net framework 類庫 (FCL) 的強大功能。
此環境對 Windows命令提示符進行了改進,後者提供了帶有多種命令行工具的交互式環境。此外,還對 Windows Script Host (WSH)腳本進行了改進,後者允許您使用多種命令行工具和 COM 自動對象,但未提供交互式環境。
通過將對所有這些功能的訪問組合在一起,Windows PowerShell 擴展了交互用戶和腳本編寫者的能力,從而更易於進行係統管理。
麵向對象
盡管您可以通過以文本方式鍵入命令與 Windows PowerShell 進行交互,但 Windows PowerShell 是基於對象的,而不是基於文本的。命令的輸出即為對象。可以將輸出對象發送給另一條命令以作為其輸入。因此,Windows PowerShell 為未曾使用過其他外殼程序的人員提供了熟悉的界麵,同時引入了新的、功能強大的命令行範例。通過允許發送對象(而不是文本),它擴展了在命令之間發送數據的概念。
易於過渡到腳本
使用 Windows PowerShell,您可以很方便地從以交互方式鍵入命令過渡到創建和運行腳本。您可以在 Windows PowerShell命令提示符下鍵入命令以找到可執行任務的命令。隨後,可將這些命令保存到腳本或曆史記錄中,然後將其複製到文件中以用作腳本。
識別你即將使用的Provider 通過識別PowerShell裏安裝的Provider,你就可以了解默認安裝下PowerShell提供了那些能力。 Provider可以使用一種簡單的訪問方式,暴露位於不同儲存位置的數據。就像是瀏覽不同磁盤上的目錄結構一樣簡單。 Provider把不同的信息存放位置,表示成“驅動器”-目錄這種結構,這樣很容易被用戶所理解。就像我們要訪問一個位於D盤的WIN32目錄下的SETUP.exe文件,我們要通過瀏覽器,單擊D盤的圖標,然後選擇WIN32目錄並雙擊一樣,如果我們要訪問位於“注冊表”的數據,那麼我們也隻需要簡單地通過Set-Location命令,來到到“REGISTRY”這個“驅動器”,然後用GET-CHILDITEM命令獲取其子數據就行了。
注:實際上,PowerShell訪問磁盤驅動器,也是通過Provider的,切換驅動器其實和切換其他數據容器是一樣地操作。 例如: Set-Location d:\ 這是切換驅動器 Set-Location HKLM:\ 這是切換到注冊表的HKLM鍵 另外,Get-PSprovider命令,可以查看當前已經安裝的所有PROVIDER。任何熟悉.NET編程的人,都可以編寫Provider。當新的provider被安裝後,就叫做snap-in。snap-in其實是一個動態連接庫dll文件,可以被安裝到powershell中。然而,當一個snap-in安裝後,卻沒有辦法卸載。 Get-PSProvider: Name Capabilities Drives ---- ------------ ------ Alias ShouldProcess {Alias} Environment ShouldProcess {Env} FileSystem Filter, ShouldProcess {C, D, F, A...} Function ShouldProcess {Function} Registry ShouldProcess {HKLM, HKCU} Variable ShouldProcess {Variable} Certificate ShouldProcess {cert} 這些就是我機器上的默認安裝後的provider。
使用Set-Location和Get-ChildItem瀏覽數據 Set-Location用於改變當前目錄,以及選擇當前的provider,而Get-ChildItem用於獲取當前目錄或者指定目錄下的子對象: 例子: set-location hkcu:\software get-childitem 例子2: GCI -path HKLM:\software
有兩種連接WMI服務的方法:l 使用Get-WmiObject可以很容易地連接到WMI服務,並且獲取WMI對象。 l 使用一個COM對象,“WbemScripting.SWbemLocator”,可以連接WMI的服務。SWbemLocator對象隻有一個方法,就是ConnectServer()。該方法接受5個參數:用戶名,密碼,語言代碼,驗證方法(Kerberos, NTLM等),標誌(超時值)。
下例中,我們使用New-Object命令,創建了一個“WbemScripting.SWbemLocator”的實例。然後用這個實例的ConnectServer方法連接了到了一個WMI的名字空間(root\cimv2),ConnectServer方法返回了一個WMIService對象,接著又用這個對象的subClassesOf()方法,返回了一係列WMI的CLASS: $strComputer = "." $wmiNS = "\root\cimv2" $strUsr ="" #Blank for current security. Domain\Username $strPWD = "" #Blank for current security. $strLocl = "MS_409" #US English. Can leave blank for current language $strAuth = "" #if specify domain in strUsr this must be blank $iFlag = "0" #only two values allowed: 0 and 128. $objLocator = New-Object -comobject "WbemScripting.SWbemLocator" $objWMIService = $objLocator.ConnectServer($strComputer, ` $wmiNS, $strUsr, $strPWD, $strLocl, $strAuth, $iFLag) $colItems = $objWMIService.subClassesOf() Write-Host "There are: " $colItems.count " classes in $wmiNS" foreach ($objItem In $colItems) { $objItem.path_.class }
測試
在macOS上刪除對DNS測試連接的依賴 (#12943)
建造和包裝改進
更新.NET Core至3.1.6(內部12005)。
* 用於管理位於不同存儲中以及采用不同格式的 Windows 數據的標準實用程序,這些數據包括 Active Directory (ADSI)、Windows Management Instrumentation (WMI)、組件對象模型 (COM) 對象、ActiveX 數據對象 (ADO)、HTML 和 XML.
* 在命令行進行的高級表達式分析和 .NET 對象處理,其中包括對對象進行流水線處理以幫助提高 IT 專業人員的工作效率.
* 可擴展的接口,使獨立軟件供應商和企業開發人員能夠構建自定義 cmdlet 以滿足特有的應用程序和係統管理要求.
安裝本更新程序後,可能需要重新啟動計算機.我們根據 Windows Vista 許可條款向您提供本更新程序並授予您使用許可.
* 129 個命令行工具(稱為“cmdlet”),用於執行常見係統管理任務,如管理服務、進程、事件日誌、證書、注冊表以及使用 Windows Management Instrumentation (WMI).
* 采用標準命名約定和通用參數的命令行工具,易於掌握和使用;以及用於對數據和對象進行排序、篩選以及格式設置的簡便工具.
* 對現有腳本語言、現有命令行工具以及多種 Windows 版本的支持,其中包括 Windows XP、Windows Server 2003、Windows Vista 以及 Windows Server(代碼名稱為“Longhorn”).
* 方便的功能,使用戶能夠瀏覽數據存儲(如注冊表和證書存儲),就像麵對文件係統一樣.