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 и новее, поэтому я установил PS 5.1 на свой сервер Win 2012, но все равно не повезло.

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

Есть идеи, что происходит?

2
задан 18 December 2018 в 09:45
2 ответа

Похоже, вы не используете последнюю сборку PS 5.1. Это должно быть что-то вроде 5.1.17xxx.xxx .

Как вы обновляли PowerShell?
Я бы порекомендовал получить новейшую версию WPF 5.1 из MS Docs

Обновление

. Покопавшись, оказалось, что для сервера 2012 и ниже наивысший доступный номер сборки - 5.1.14xxx из установщика WPF 5.1. Если он не обновляется через обновления Windows, я не нашел никакой документации, в которой говорилось бы, что вы можете обновить сборку.

Единственный способ, который я могу придумать для решения этой проблемы, - это установить PowerShell 6 (PowerShell Core ). Я только что протестировал, и он отлично работает и в Core. Он устанавливается рядом с вашей Windows PowerShell и использует для запуска pwsh.exe.

Однако обратите внимание, что не все модули доступны для Core, поэтому, если вы используете модуль, в котором у вас его нет для ядра вы можете использовать модуль совместимости Windows PowerShell

0
ответ дан 3 December 2019 в 13:51

В моей системе (не Windows Server) команда

Get-ChildItem -LiteralPath 

работает как предполагалось. Может, вы попробуете это?

0
ответ дан 3 December 2019 в 13:51

Теги

Похожие вопросы