PowerShell 筆記 - 基礎篇

来源:https://www.cnblogs.com/Chinori/archive/2022/05/18/16284625.html
-Advertisement-
Play Games

基礎 查看powershell版本 PS C:\Users\chino> $PSVersionTable Name Value PSVersion 5.1.22000.653 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} ...


基礎

查看powershell版本

PS C:\Users\chino> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.22000.653
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22000.653
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1


查看簡易幫助文檔

help cmdlet  ##例如 help Get-Service

如果沒有幫助文檔, 需要先運行以下命令更新幫助文檔(需要以管理員運行)

Update-Help

如果電腦無法上網, 可以用以下方式離線來安裝幫助文檔
先從已經安裝幫助文檔的機器運行以下命令

Save-Help -DestinationPath ./

從另一臺伺服器運行以下命令裝載幫助文檔

Update-Help -SourcePath ./

使用幫助系統查找命令, 例如想查找系統事件日誌, 卻不知道使用哪個命令, 可以運行以下命令

Help *log*
Help *event*

或者使用Get-Command (簡寫gcm) 查詢cmdlet命令

gcm *log*
get-help cmdlet --detailed  查看詳細幫助, 相當於man
get-help cmdlet --examples  查看樣例

常用的參數類型

  • string, 數字字母和空格, 如果出現空格符, 全部字元串必須包含在引號內部, 最好用單引號.
  • Int, Int32或Int64, 一個整數類型, 不包含小數
  • DateTime, 時間日期類型

如果參數類型為數據集合, 可以使用, 隔開, 例如

Get-EventLog Security -computer server1,DC4,file2

可選參數與必選參數 / 位置參數

例如 Get-Help
Get-Help [[-Name] <string>] [-Path <string>] [-Category {Alias | Cmdlet | Provider | General | FAQ | Glossary | HelpFile | ScriptCommand | Function | Filter | ExternalScript | All | DefaultHelp | DscResource | Class | Configuration}] [-Full] [-Component <string[]>] [-Functionality <string[]>] [-Role <string[]>] [<CommonParameters>]
    
[[-Name] <string>] 是一個位置參數, 因為參數名稱在一個方括弧內, 同時還是一個可選參數, 因為參數名稱和參數值位於同一個方括弧內.

位置參數可以不用指定參數名, 比如Get-Help Get-EventLog 可以直接運行而不用指定 -Name 參數名.
最佳實踐是總是指定參數名, 熟練以後再使用位置參數來節省時間

Cmdlet 的命名慣例,以標準的動詞開始比如Get, Set, New, 或Pause

powershell中的別名: 只是命令的一個昵稱, 無法包含任何參數

使用快捷方式:

  • 簡化參數名稱: powershell不要求輸入完整的參數名稱, 例如可以用-comp代替-ComputerName , 必須是唯一識別參數所需要輸入的最少的部分. 比如在參數-ComputerName-Composit 都存在的情況
  • 參數名稱別名. 例如 Get-Command Get-EventLog | select -ExpandProperty parameters 可以查看別名, -Cn 就是 -ComputerName 的別名
  • 位置參數. 例如Get-ChildItem C:\ 替代 Get-ChildItem -Path C:\

Show-Command cmdlet 命令可以在windows上以GUI的方式列出命令的參數名稱

Powershell 提供程式(PSProvider)

PSProvider,其本質上是一個適配器。它可以接受某些數據存儲,並使得這些介質看起來像是磁碟驅動器一樣。你可以通過下麵的命令查看當前Shell中已經存在的提供程式.

Get-PSProvider

Name                 Capabilities                                        Drives
----                 ------------                                        ------
Alias                ShouldProcess                                       {Alias}
Environment          ShouldProcess                                       {Env}
FileSystem           Filter, ShouldProcess, Credentials                  {/, Temp}
Function             ShouldProcess                                       {Function}
Variable             ShouldProcess                                       {Variable}

可以通過模塊或者一些管理單元來將一些提供程式添加到powershell中, 這也是powershell僅支持的兩種擴展方式. 如果啟用了某些powershell功能, 可能也會新增一個PSProvider, 比如開啟了遠程處理時, 會新增 WSMan Credentials

PSProvider常見的功能描述:

  • ShouldProcess 提供支持-WhatIf-Confirm參數, 保證我們在正式執行這部分腳本之前可以對它們進行測試
  • Filter 在cmdlet中操作提供程式的數據時, 支持-Filter參數
  • Credentials 改提供程式允許使用可變更的憑據連接數據存儲, 這也就是-Credentials參數的作用
  • Transactions 該提供程式支持事務, 也就是允許在改提供程式中將多個變更作為一個原子操作進行提交或者全部回滾

可以使用某個提供程式創建一個PSDrive, PSDrive可以通過一個特定的提供程式連接到某些存儲數據的介質, 這和在windows資源管理器中類似, 本質上是創建一個驅動器映射, 但是由於PSDrive使用了提供程式, 除了可以連接磁碟以外, 還能連接更多的數據存儲介質, 運行Get-PSDrive 可以看到當前已經連接的驅動器.
可以通過一系列cmdlets去查閱和操作每個PSDrive呈現出來的數據, 大多數情況下, 操作PSDrive的cmdlet名詞部分都會包含item. 可以通過Get-Command -noun *Item* 查看這些cmdlets

PSProvider常規文件操作

Windows 文件系統包括三部分: 磁碟驅動器, 文件夾, 文件.
PSDrive指向的對象都稱為Item, Item可以是文件, 文件夾

切換目錄

Set-Location -Path 'C:\Windows' # 等同於cd 'C:\Windows'

創建一個項Item

New-Item -ItemType directory folder # ItemType不指定預設創建文件類型的Item

Mkdir 也可以創建文件夾, 但Mkdir是一個function, 隱式調用了New-Item, 並指定ItemType為directory

powershell 可以使用?* 通配符, 如果文件名字中包含?或者*. 可以用-LiteralPath 參數. 該參數不支持任何通配符, 嚴格按照鍵入的值使用.

查看所有的PSDrive

Get-PSDrive
## 此處為mac下運行, windows下可以看到註冊表類型HKCU, HKLM 等
Name           Used (GB)     Free (GB) Provider      Root                                    CurrentLocation
----           ---------     --------- --------      ----                                    ---------------
/                 226.26        239.37 FileSystem    /                                                   tmp
Alias                                  Alias                                                                
Env                                    Environment                                                          
Function                               Function                                                             
Temp              226.26        239.37 FileSystem    /var/folders/zp/53pdcbdj4q7g7d_sf6…                    
Variable                               Variable 

PSProvider操作註冊表

Set-Location -Path HKCU:
Set-Location xxx   ## 選中要修改的註冊表路徑
Set-ItemProperty -Path DWM -PSProperty EnableColorization -Value 0  ## 設置

註意: Set-Item 無法作用於FileSystem的Provider, 修改文件內容用Set-Content


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 大家好,這篇文章分享了C程式設計(譚浩強)第五版第三章課後題答案,所有程式已經測試能夠正常運行,如果小伙伴發現有錯誤的的地方,歡迎留言告訴我,我會及時改正!感謝大家的觀看!!! ...
  • NLog 是我們在 .NET 領域使用非常廣泛的日誌組件。它預設使用 xml 來維護它的配置。最近有幾個同學問我當使用 AgileConfig 的時候如何配置 NLog 。因為 AgileConfig 不支持集成 xml 格式的配置。其實 NLog 是支持從 appsettings.json / I ...
  • 隨手一揮,記錄一下。 以下代碼,包含了需求有: 1.十進位轉二進位。 2.二進位轉16進位 3.將十進位轉二進位的位數,不足5位的 用0 補齊5位。 4.將轉換後的二進位拼接起來,截取8位 作轉換為16進位,最後不足8位的,用 “1111” 補齊。在作轉換 。 不廢話,上代碼先。 主界面圖片: 主要 ...
  • 我們在設計資料庫表的時候,往往為了方便,主鍵ID一般採用字元串類型或者GUID類型,這樣對於資料庫表記錄的遷移非常方便,而且有時候可以在處理關聯記錄的時候,提前對應的ID值。但有時候進行數據記錄插入的時候,往往忽略了對ID的賦值處理。為了便於使用或者允許自動賦值,我們可以在數據訪問基類中對GUID主... ...
  • .Net 6 WebApi 項目 在Linux系統上 打包成Docker鏡像,發佈為Docker容器實例 步驟教學,超詳細! ...
  • curl curl 報錯: curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate. 忽略方法 添加臨時 功能變數名稱解析 緩存的方式 ...
  • 配置yum源,自建機房的機器無影響,各雲伺服器建議使用雲伺服器的yum源地址 以騰訊雲為例,CentOS EPEL 更新伺服器yum所有軟體 ...
  • Termius是微軟的一款SSH終端工具,它支持多平臺。而且操作界面十分ha好看且簡潔,今天分享給大家❤️ 軟體下載 關註下方公眾號,回覆termius獲取下載地址 軟體功能介紹 Termius Mac破解版是一款非常好用而且漂亮的SSH客戶端,能快速遠程式控制制伺服器,可以定製自己喜歡的主題,支持FT ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...