首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> .NET 實例教學

PowerShell New-Alias 指令完整參考:建立、選項、範圍、持久化與實用範例

     編輯:.NET 實例教學

語法總覽

New-Alias [-Name] <String> [-Value] <String> 
    [-Description <String>] 
    [-Option {None | ReadOnly | Constant | Private | AllScope}] 
    [-PassThru] 
    [-Scope <String>] 
    [-Force] 
    [-WhatIf] 
    [-Confirm] 
    [<CommonParameters>]

參數詳細說明

參數必要預設說明
-Name是-別名名稱,首字不得為數字
-Value是-目標 Cmdlet/函數/腳本名稱 (不含參數)
-Description否空說明文字,含空格需加引號
-Option否None見下表
-PassThru否False輸出建立的 AliasInfo 物件到管線
-Scope否LocalGlobal / Local / Script 或相對數字 (0=當前, 1=父層)
-Force否False同名存在時覆寫 (相當 Set-Alias 行為)
-WhatIf否-模擬執行,不實際建立
-Confirm否-執行前提示確認

Option 選項對照

選項行為
None預設,可修改、可移除、可見於所有子範圍
ReadOnly屬性鎖定,需 -Force 才能修改/移除
Constant永久鎖定,甚至 -Force 也無法變更
Private僅在指定 -Scope 可見,子範圍不可見
AllScope自動複製到所有子範圍 (Global 除外)

常用範例

1. 基本別名

New-Alias -Name "list" -Value "Get-ChildItem"
# 等同
New-Alias list Get-ChildItem

2. 唯讀別名附描述

New-Alias -Name "w" -Value "Get-WmiObject" `
    -Description "Quick WMI alias" `
    -Option ReadOnly
Get-Alias w | Format-List *  # 驗證屬性

3. 全域唯讀常用工具

New-Alias -Name "grep" -Value "Select-String" `
    -Option AllScope -Scope Global
# 所有子範圍 (腳本、函數) 皆可用 grep

4. 臨時覆寫內建指令 (需 Force)

New-Alias -Name "dir" -Value "Get-ChildItem" -Force
# 原 dir 為 Get-ChildItem 別名,Force 覆寫無誤

5. 腳本內私有別名

# MyScript.ps1
New-Alias -Name "log" -Value "Write-Host" -Option Private -Scope Script
log "Only visible in this script"
# 呼叫端不受影響

持久化:跨 Session 保留別名

New-Alias 建立的別名僅存在於目前 Session,關閉視窗即消失。

匯出/匯入

# 匯出
Export-Alias -Path "$HOME\my-aliases.txt" -Force
# 或只匯出特定
Get-Alias list, w, grep | Export-Alias -Path "$HOME\my-aliases.txt"

# 匯入 (放入 $PROFILE)
Import-Alias -Path "$HOME\my-aliases.txt"

寫入 $PROFILE 自動載入

notepad $PROFILE
# 加入
Import-Alias "$HOME\my-aliases.txt" -ErrorAction SilentlyContinue
# 或直接在 Profile 定義
New-Alias -Name "list" -Value "Get-ChildItem" -Option AllScope -Scope Global

相關指令對照

用途指令
建立/修改別名Set-Alias (存在則更新,不存在則建立)
建立新別名New-Alias (存在報錯,除非 -Force)
移除別名Remove-Item Alias:\Name 或 Remove-Alias (別名)
查詢別名Get-Alias, gal

最佳實務

  1. 命名慣例:小寫、簡短、易記、不與常用 Cmdlet 衝突 (如 gci 已是 Get-ChildItem 內建別名)。
  2. 文件化:善用 -Description,團隊共享 Export-Alias 檔案。
  3. 範圍控制:腳本內部別名用 -Option Private -Scope Script 避免汙染呼叫端。
  4. 唯讀保護:核心工具別名加 -Option ReadOnly 或 Constant 防誤改。
  5. 避免參數內嵌:Value 僅接受命令名稱,參數需用函數/腳本包裝:
    function mygrep { Select-String -Pattern $args[0] }; New-Alias mg mygrep

常見問題

問題原因/解決
別名失效Session 結束未持久化 → 加入 $PROFILE 或 Import-Alias
無法覆寫目標為 Constant/ReadOnly → 先移除或用 Set-Alias -Force
參數不生效別名不支援參數預設值 → 改用函數/ScriptBlock
Tab 補全不出現需 Import-Module 或重新載入 Profile

結語

New-Alias 是 PowerShell 客製化體驗的基石。善用 Option、Scope、Description 與持久化機制,能建立個人/團隊專屬的指令語彙,大幅提升互動式操作與腳本撰寫效率。建議將常用別名集中管理於版控下的 AliasProfile.ps1,並在 $PROFILE 中 Import-Alias 或 . (dot-source) 載入,實現一致、可追蹤、可共享的環境設定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved