共用方式為


PowerShell Core 6.2 的新內容

PowerShell Core 6.2 版本著重於效能提升、錯誤修正,以及更小的指令碼和語言增強,以提升品質。 想查看完整的改進清單,請參考我們在 GitHub 上的詳細 變更日誌

實驗性功能

之前,我們啟用了對 實驗性功能(Experimental Features)的支援。 在 6.2 版本中,我們有四項實驗性功能可供試用。請提供回饋,讓我們能進行改進,並決定是否值得將此功能推廣為主流。

使用 Get-ExperimentalFeature 以取得可用的實驗性功能清單。 你可以用 Enable-ExperimentalFeatureDisable-ExperimentalFeature來啟用或停用這些功能。

指令未找到建議

這個功能利用模糊比對來尋找你可能打錯的指令或 cmdlet 建議。

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

在這個例子中,拼錯的指令碼名稱會模糊匹配多個建議,從最有可能到最不可能。

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

隱式遠端批次

在管線中使用 隱式遠端時 ,PowerShell 會獨立處理管線中的每個指令。 物件會反覆序列化,並在 de-serialized 客戶端與遠端系統之間透過管線執行進行。

透過此功能,PowerShell 分析管線以判斷該指令是否安全可執行,且該指令是否存在於目標系統中。 當 PowerShell 為真時,會遠端執行整個管線,只序列化並將 de-serializes 結果回傳給用戶端。

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

在實際環境中, Get-Process | Sort-Object 對本地主機的測試時間會從 10-15 秒縮短到 20-30 毫秒。 這個功能只需要在用戶端啟用即可。 伺服器上不需要做任何更改。

臨時駕駛

Enable-ExperimentalFeature -Name PSTempDrive

如果你在不同作業系統上使用 PowerShell Core,你會發現 Windows、macOS 和 Linux 用來尋找暫存目錄的環境變數是不同的! 有了這個功能,你會自動被調用Temp:PSDrive,並映射到你所使用的作業系統的暫存資料夾。

Example

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

請注意,原生檔案指令(像 ls 是 Linux 上)不會偵測到 PSDrives,因此不會看到這顆 Temp: 硬碟。

縮寫展開

PowerShell 的 cmdlet 預期會有描述性名詞。 這導致名字較長且較難輸入。 這個功能讓你只要輸入 cmdlet 的大寫字元,再用 Tab 補全來找匹配。

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

如果你按 Tab 鍵,且安裝了 Azure PowerShell Az 模組,它會自動完成:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

備註

此功能設計為互動式使用。 指令小子的縮寫形式無法執行。 此功能不能取代別名。

重大變更

  • 修正 -NoEnumerate 行為 Write-Output 以符合 Windows PowerShell 的一致性。 (#9069)
  • Join-String -InputObject 1,2,3 結果等於 1,2,3 | Join-String 結果(#8611)(謝謝) @sethvs!)
  • 新增-StableSort-Object及相關測試(#7862)(謝謝)@KirkMunro!)
  • 改進 Start-Sleep 指令碼以接受分秒(#8537)(謝謝) @Prototyyppi!)
  • 將雜湊表改為使用 OrdinalIgnoreCase,使所有文化皆有 case-insensitive (#8566)
  • 修正 LiteralPathImport-Csv 綁定輸出 Get-ChildItem (#8277)(謝謝) @iSazonov!)
  • 如果在 (#7899) 中使用 Import-Csv 雙引號分隔符,也不會再跳過無名欄位(謝謝) @Topping!)
  • Get-ExperimentalFeatureSwitch (#8318) 已不再存在-ListAvailable
  • 除錯參數現在改 $DebugPreference繼續 而非 詢問 (#8195)(謝謝) @KirkMunro!)
  • -OutputFormat若指定於非互動式、重定向、編碼指令,則使用 pwsh(#8115)
  • 在嘗試從 GAC 載入前,先從模組基座路徑載入組裝(#8073)
  • 從 Linux 預覽套件中移除 tilde(#8244)
  • 在處理設定檔之前移動處理 -WorkingDirectory (#8079)
  • 不要在 Unix 上新增 PATHEXT 環境變數(#7697)(謝謝) @iSazonov!)

已知問題

  • 在 Windows IOT ARM 平台上進行遠端存取時,模組載入時會遇到問題。 參見 (#8053)

一般更新與修正

  • 啟用大小寫不區分的分頁補全功能,適用於大小寫區分檔案系統(#8128) 中的檔案與資料夾
  • 將 PSVersionInfo.PSVersion 和 PSVersionInfo.PSEdition 公開(#8054)(謝謝) @KirkMunro!)
  • 新增類型推論 in $_ / $PSItemcatch{ } blocks(#8020)(謝謝) @vexx32!)
  • 修正靜態方法調用類型推論(#8018)(感謝) @SeeminglyScience!)
  • 為 、 Group-Object、PSObjectHashtable(#7231)建立推論型別Select-Object(感謝)@powercode!)
  • 支援帶有型 ByRef-like 別參數的呼叫方法(#7721)
  • 處理 Windows PowerShell 模組路徑已存在於環境 PSModulePath (#7727) 的情況
  • 透過 SecureString 儲存純文字啟用非 Windows 的 cmdlet(#9199)
  • 在非 Windows 系統中以 securestring 匯入 clixml 時,改善錯誤訊息(#7997)
  • 新增參數 ReplyTo 至 Send-MailMessage (#8727)(感謝) @replicaJunction!)
  • 新增過時訊息至 Send-MailMessage (#9178)
  • 當 WinRM 不存在時該修復localhost的修正Restart-Computer(#9160)
  • 當 PowerShell 被託管時,會產生 Start-Job 拋棄終止錯誤(#9128)
  • 為 ushort、uint、ulong 和 short 字面值加上 C# 風格的加速器和後綴(#7813)(感謝) @vexx32!)
  • 新增數字字面字尾——參見 about_Numeric_Literals (#7901)(感謝) @vexx32!)
  • 當 SupportsShouldProcess 未設為「true」時,正確回報影響等級(#8209)(謝謝) @vexx32!)
  • 修正網頁指令匣中請求字元集問題(#8742)(謝謝) @markekraus!)
  • 修正網頁指令匣(#8679)的預期 100-continue 問題(謝謝) @markekraus!)
  • 修正網頁指令檔(#7676)檔案阻塞問題(謝謝) @Claustn!)
  • 修正 (#8694) 中的 Invoke-RestMethod 代碼頁解析問題(謝謝) @markekraus!)
  • Refactor ConvertTo-Json to expose JsonObject.ConvertToJson as a public API (#8682)
  • 用 -Depth (#8199) 加入可設定的最大深度 ConvertFrom-Json (謝謝) @louistio!)
  • 在 cmdlet (#7775) 中新增 EscapeHandling 參數 ConvertTo-Json (感謝) @iSazonov!)
  • 加入 -CustomPipeName pwsh 和 Enter-PSHostProcess (#8889)
  • 啟用在 Windows 上建立相對符號連結,使用 New-Item (#8783)
  • 允許 Windows 開發者模式使用者建立無高度的符號連結(#8534)
  • 啟用 Write-Information 接受 $null (#8774)
  • MAML 說明內容中的進階函數修正 Get-Help (#8353)
  • 當只宣告一個參數(#8754)時,修正 Get-Help PSTypeName 在 -Parameter 上的問題(謝謝) @pougetat!)
  • ScriptBlock 執行的標記計算修正 Get-Help ,方便評論協助。 (#8238)(謝謝 @hubuk!)
  • 將 cmdlet -Parameter 參數改 Get-Help 成接受字串陣列(#8454)(謝謝) @sethvs!)
  • 如果 PAGER 的路徑包含空格,請解析 (#8571)(謝謝) @pougetat!)
  • 在「help」函式中加入提示 less ,指示使用者如何退出(#7998)
  • 在 cmdlet (#8191) 中加入支援列舉和字元類型 Format-Hex (感謝) @iSazonov!)
  • 從 (#8178) 移除 ShouldProcess Format-Hex
  • 新增 Offset 和 Count 參數, Format-Hex 並重構 cmdlet (#7877)(謝謝) @iSazonov!)
  • 允許「name」作為 label 的 ConvertTo-Html別名鍵,允許「width」項目為整數(#8426)(謝謝) @mklement0!)
  • 讓基於 scriptblock 的計算屬性在 (#8427) 中再次 ConvertTo-Html 運作(謝謝) @mklement0!)
  • 新增 cmdlet Join-String 以從管線輸入產生文字(#7660)(謝謝) @powercode!)
  • 修正 Join-String cmdlet FormatString 參數邏輯(#8449)(謝謝) @sethvs!)
  • Clear-Host 回使用並 $RAWUI 清除工作,取代遠端通訊(#8609)
  • Clear-Host 為簡單呼叫 [console]::clear 並移除 Unix 上的清除別名(#8603)
  • 修正 LiteralPath Import-Csv 綁定輸出 Get-ChildItem (#8277)(謝謝) @iSazonov!)
  • 說明功能不應該使用分頁器來處理 AliasHelpInfo(#8552)
  • 新增-UseMinimalHeaderStart-Transcript以減少逐字稿標頭(#8402)(謝謝)@lukexjeremy!)
  • 加法 Enable-ExperimentalFeatureDisable-ExperimentalFeature 指令小程式(#8318)
  • 如果有 PSDiagnostics 的所有 cmdlet,請公開 logman.exe (#8366)
  • 移除平台上的 Persist 參數New-PSDrivenon-Windows(#8291)(謝謝)@lukexjeremy!)
  • 新增支援 cd + (#7206)(謝謝) @bergmeister!)
  • 啟用 Set-Location -LiteralPath 可操作名為 - 與 + (#8089) 的資料夾
  • Test-Path當給定空值或$null路徑值(#8080)時回傳 $false (感謝)@vexx32!)
  • 即使路徑與任何提供者不符,仍允許回傳動態參數(#7957)
  • 支援 Get-PSHostProcessInfoEnter-PSHostProcess Unix 平台(#8232)
  • 減少指令檔(#8103)中的 Get-Content 分配(謝謝) @iSazonov!)
  • 在撰寫內容時啟用 Add-Content 與其他工具共享閱讀權限(#8091)
  • Get/Add-Content 目標容器時的誤差改善(#7823)(感謝) @kvprasoon!)
  • 在 cmdlet (#7702) 中加入 -Name-NoUserOverrides-ListAvailable 參數 Get-Culture (謝謝) @iSazonov!)
  • 編碼 參數新增統一屬性以完成。 (#7732)(謝謝 @ThreeFive-O!)
  • 允許在 編碼 參數(#7636)中輸入數值 ID 與註冊碼頁名稱(感謝) @iSazonov!)
  • 用萬用字元角色修正 Rename-Item -Path (#7398)(謝謝) @kwkam!)
  • 當 and Start-Transcript 存在檔案時,請用空檔而不是刪除(#8131)(謝謝) @paalbra!)
  • FileAccess.ReadFileShare.Read 明確製作Add-Type開源檔案(#7915)(謝謝)@IISResetMe!)
  • 最新 Windows(#7883)修復 Enter-PSSession -ContainerId 方法
  • 確保 NestedModules 屬性被 Test-ModuleManifest (#7859) 填充
  • 把機殼加 %FGet-Date -UFormat(#7630)(謝謝) @britishben!)
  • 解決有依賴性服務的終止 Set-Service -Status Stopped 方法(#5525)(謝謝) @zhenggu!)