Windows-Server-2012-R2
LiteralPath 不適用於 PowerShell 5.1 Windows Server 2012
對於某些 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 的?
更新
進行了一些探勘,似乎對於伺服器 2012 及以下可用的最高內部版本號是 WPF 5.1 安裝程序中的 5.1.14xxx。如果它沒有通過 Windows 更新進行更新,我還沒有找到任何說明您可以更新建構的文件。
我能想到的解決這個問題的唯一方法是安裝 PowerShell 6(PowerShell Core)。我剛剛測試過,它在 Core 中也可以正常工作。它與您的 Windows PowerShell 並排安裝,並使用 pwsh.exe 啟動。
但是,請注意,並非所有模組都可用於 Core,因此,如果您使用的模組不是核心的本機模組,則可以使用Windows PowerShell 兼容性模組