Windows-Server-2012-R2

LiteralPath 不適用於 PowerShell 5.1 Windows Server 2012

  • March 4, 2022

對於某些 PS 腳本,我需要 Get-ChildItem 才能使用 ‘\?...’ 我嘗試使用原始版本 4.0,但沒有運氣:

Get-ChildItem : Illegal characters in path.

我在我的電腦(Win 10 1703)上試過,它工作正常:

Get-ChildItem -LiteralPath '\\?\C:\'


   Directory: \\?\C:


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       03/12/2018     16:23                driver
d-----       13/11/2018     12:14                EmpirumPackages
d-----       13/11/2018     10:27                FibocomLog
d-----       15/11/2018     16:01                Intel
d-----       15/06/2018     17:27                PerfLogs
d-r---       18/12/2018     08:12                Program Files
d-r---       12/12/2018     10:59                Program Files (x86)
d-r---       18/11/2018     07:06                Users
d-----       14/12/2018     08:36                Windows
-a----       18/12/2018     08:35        9756932 action.log
-a----       13/11/2018     10:11         655360 alertlog.dat
-a----       13/11/2018     12:14          15361 Thininstaller.log

(我複制粘貼了命令,所以這裡沒問題)

我在某處讀到它從 PS 5.0 及更高版本開始工作,因此我在我的 Win 2012 伺服器上安裝了 PS 5.1 但仍然沒有運氣。

Get-ChildItem : Illegal characters in path.

這是我的伺服器輸出:

Name                           Value
----                           -----
PSVersion                      5.1.14409.1005
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14409.1005
CLRVersion                     4.0.30319.34014
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

還有我的電腦輸出

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

知道發生了什麼嗎?

看起來您沒有執行最新的 PS 5.1 版本。它應該是類似的東西5.1.17xxx.xxx

你是如何更新你的 PowerShell 的?

我建議從MS Docs獲取最新的 WPF 5.1

更新

進行了一些探勘,似乎對於伺服器 2012 及以下可用的最高內部版本號是 WPF 5.1 安裝程序中的 5.1.14xxx。如果它沒有通過 Windows 更新進行更新,我還沒有找到任何說明您可以更新建構的文件。

我能想到的解決這個問題的唯一方法是安裝 PowerShell 6(PowerShell Core)。我剛剛測試過,它在 Core 中也可以正常工作。它與您的 Windows PowerShell 並排安裝,並使用 pwsh.exe 啟動。

但是,請注意,並非所有模組都可用於 Core,因此,如果您使用的模組不是核心的本機模組,則可以使用Windows PowerShell 兼容性模組

引用自:https://serverfault.com/questions/945763