Practice
常用命令
vim $PROFILE # 編輯配置檔案
Get-ChildItem *> $null # 拋棄所有輸出
whoami
Remove-Item -Recurse -Force <dir> # rm -rf
Start-Process <dir> # macOS 中的 open,alias start
Get-Help <string> -Online
Get-Command <string> # sh 中的 which
Get-Command pwsh | Select-Object Source # 只輸出 Get-Command 返回物件的 Source 屬性;Select-Object 也可以用 select 代替
Get-Service sshd
Start-Service sshd
Set-Service -StartupType Automatic sshd
Update-Help -UICulture en-US # 更新 PowerShell 幫助文件
Unblock-File course.ps1 # 取消阻止從 Internet 下載的檔案
Get-Content
命令也可以顯示變數值:Get-Content Env:PATH
常用環境變數
$Env:http_proxy="http://127.0.0.1:7890";$Env:https_proxy="http://127.0.0.1:7890" # 設定環境變數
$Env:http_proxy="";$Env:https_proxy="" # 清除環境變數
$Env:Path -split ';' | sls python # 檢視環境變數並篩選 python
$Env:Path += ';C:\Tools'
$Env:USERNAME
配置檔案位置:$PROFILE
about_Profiles
about_PowerShell_Config
about_Environment_Variables
關於指令碼:about_Scripts
安裝 PowerShell 7
winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget
Oh My Posh
Oh My Posh
安裝
winget install JanDeDobbeleer.OhMyPosh -s winget
Oh My Posh 更新很快,有時會被防毒軟體誤報,可以考慮將可執行檔案路徑
(Get-Command oh-my-posh).Source
加入防毒軟體的白名單。
更新
winget install JanDeDobbeleer.OhMyPosh -s winget
安裝字型
oh-my-posh font install # 在管理員許可權下執行
官方推薦
MesloLGM NF
字型
啟用 Oh My Posh
notepad $PROFILE # 編輯 PowerShell 配置檔案
向配置檔案中新增如下內容:
oh-my-posh init pwsh | Invoke-Expression
Oh My Posh 的主題資料夾位置儲存在環境變數 $Env:POSH_THEMES_PATH
中。可以透過命令以下命令檢視。
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"
PowerShell 101
PowerShell 101
PowerShell 101 中文版
什麼是 101 課程
我們常說的 "101課程",通常是指 XXXX 的入門級課程。在美國,數字 "101" 是大學課程中普遍使用的介紹性課程編號,是對某一個主題的綜覽課程。因為許多教程的第一章或者導論部分都會用 "101" 做標註,這個詞彙漸漸的就被引申了出來,用來表示基礎入門級課程,變成了一個代號,也就是基礎課程的同義詞。
部落格園: 什麼是 101 課程
管理當前位置
變數
註釋
$a = 1 # 單行註釋
<#
多行註釋
$b = 2
#>
變數
變數名以 $
開始,不區分大小寫:
$a = 1
$b = 2
$result = $a * $b
$result # 輸出變數
自動變數
變數名 | 描述 |
---|---|
$? |
上一個命令的退出狀態,如果上一個命令執行成功,則 $? 的值為 True ,否則為 False |
$args |
傳遞給指令碼的引數,是一個陣列 |
$HOME |
使用者主目錄 |
$PWD |
當前工作目錄 |
PowerShell 自動變數 | 易百教程
字串
$s1 = '$a * $b = $result' # 單引號字串中的變數不會被解析
$s2 = "$a * $b = $result" # 雙引號字串中的變數會被解析
$s3 = "line1`nline2" # PowerShell 使用 ` 作為轉義符
$s4 = $(Get-Date) # 命令替換
PowerShell cmdlets
PowerShell 命令被稱作 cmdlet
(發音 command-let),每個cmdlet 的名字由一個動詞-名詞對組成,例如 Get-Process
。當你要查詢一個 cmdlet 時,可以指定篩選 cmdlet
的動詞或者名詞。
cmdlet
是原生 PowerShell 命令
PowerShell 命令不區分大小寫
幫助系統
PowerShell 中的三個核心 Cmdlets:
Get-Command
Get-Help
Get-Member
Get-Help
help *process* # help process
help Get-Help -Full
help Get-Help -Online
help Get-Help -Parameter Name
help Get-Help -Examples
Update-Help
函式
help
的使用體驗要比 cmdletGet-Help
更好,help
一次只顯示一頁內容,使用空格鍵翻頁。
Update-Help 失敗
Update-Help -UICulture en-US
解決 powershell 7.1 的 Get-Help 找不到對應的詳細幫助 | CSDN
Get-Command
Get-Command
用來定位命令
Get-Command -Verb Get
Get-Command -Noun Process
Get-Command -Name Get-Process
Get-Command -Name *service* -CommandType Cmdlet, Function, Alias # 使用萬用字元搜尋時最好限制一下命令型別
# 更好的做法是指定 Verb 或 Noun 或同時指定
Get-Command | Get-Random | Get-Help -Full # Learn a PowerShell command a day
Microsoft Docs: PowerShell 101
Reference
Command Syntax
方括號表示可選項
尖括號是內容佔位符,表示引數的 .NET 型別
型別後面的 []
表示該引數可以接受多個值,用逗號分隔:
Get-Process [-Name] <string[]>
Get-Process -Name Explorer, Winlogon, Services
花括號表示列舉,表示引數的可選值:
-Option {None | ReadOnly | Constant | Private | AllScope}
-Option ReadOnly
Microsoft Docs: about_Command_Syntax
About Parameter
Microsoft Docs: about_Parameters
引數名和引數值可以用空格分隔,也可以用冒號分隔:
-<parameter_name> <parameter_value>
-<parameter_name>:<parameter_value>
使用 Get-Help
cmdlet 獲取命令引數資訊:
Get-Help Get-ChildItem
Get-Help Get-Member -Parameter * # 獲取關於 Get-Member 的所有引數的資訊
Appendix
Windows Commands
Windows Commands
常用命令
REM 註釋
HELP [command] REM man
ECHO REM 顯示訊息,或將命令回顯開啟或關閉
CD REM 顯示當前目錄的名稱或將其更改
CLS REM 清除螢幕
START REM 啟動單獨的視窗以執行指定的程式或命令
SET Path REM 顯示環境變數 Path
SET var=val REM 設定環境變數 var 的值為 val
TYPE REM cat
COPY REM cp
MOVE REM mv
RENAME [drive:][path]filename1 filename2 REM 重新命名檔案
REPLACE [drive1:][path1]filename [drive2:][path2] REM 替換檔案
DIR REM ls
MKDIR REM mkdir
DEL REM rm
RMDIR /S REM rmdir, 遞迴刪除
MKLINK REM 建立符號連結和硬連結
ATTRIB REM 顯示或更改檔案屬性
ICACLS REM chmod, 顯示、修改、備份或還原檔案和目錄的 ACL
TREE [drive:][path] REM 顯示目錄結構
TASKLIST REM ps
TASKKILL REM kill
PATH [[drive:]path[;...]][;%PATH%] REM 將 %PATH% 包括在新的路徑設定中會將舊路徑附加到新設定
SHUTDOWN /s /t 30 REM 允許透過本地或遠端方式正確關閉計算機
SC query sshd REM 查詢服務的狀態
CMD REM 開啟另一個 Windows 命令解釋程式視窗
EXIT REM 退出 CMD.EXE 程式(命令解釋程式)
ACL: Access Control List
windows 命令: net 與 sc 的區別 | 簡書
流程控制命令
FOR REM 為一組檔案中的每個檔案執行一個指定的命令
IF REM 在批處理程式中執行有條件的處理操作
LABEL REM 建立、更改或刪除磁碟的卷標
GOTO REM 將 Windows 命令解釋程式定向到批處理程式中某個帶標籤的行
感興趣的命令
ATTRIB REM 顯示或更改檔案屬性
CALL REM 從另一個批處理程式呼叫這一個
CHCP REM 顯示或設定活動內碼表,中國地區預設是 936 (GBK),可以設定為 65001 (UTF-8)
CHKDSK REM 檢查磁碟並顯示狀態報告
COMP REM 比較兩個或兩套檔案的內容
DOSKEY REM alias
FC REM 比較兩個檔案或兩個檔案集並顯示它們之間的不同
FIND REM 在一個或多個檔案中搜尋一個文字字串
FINDSTR REM 在多個檔案中搜尋字串
MODE REM 配置系統裝置(也可以檢視內碼表)
MORE REM 逐屏顯示輸出
PAUSE REM 暫停批處理檔案的處理並顯示訊息
POPD REM 還原透過 PUSHD 儲存的當前目錄的上一個值
PUSHD REM 儲存當前目錄,然後對其進行更改
RECOVER REM 從損壞的或有缺陷的磁碟中恢復可讀資訊
REM 記錄批處理檔案或 CONFIG.SYS 中的註釋(批註)
ROBOCOPY REM 複製檔案和目錄樹的高階實用工具
SETLOCAL REM 開始本地化批處理檔案中的環境更改
SCHTASKS REM 安排在一臺計算機上執行命令和程式
SORT REM 對輸入排序
SYSTEMINFO REM 顯示計算機的特定屬性和配置
XCOPY REM 複製檔案和目錄樹
常用環境變數
%CD% REM 當前工作目錄
%USERPROFILE% REM 使用者主目錄
%PATH%
%PATH:str1=str2% REM 環境變數替換增強
%USERPROFILE%
包含了驅動器名,而%HOMEPATH%
則不包含驅動器名
Windows 登錄檔
Windows registry for advanced users - Windows Server | Microsoft Learn