Terminal: Windows 10 1809 / 19H1 / 20H1は、Powershellのコンソール設定を壊します。 ラスターフォントで開き続けます。

作成日 2018年10月11日  ·  87コメント  ·  ソース: microsoft/terminal

Windows 10 1809は、Powershellのコンソール設定を壊します。 Powershellはラスターフォントで開き続けます。 設定を変更して結果を確認できますが、設定を再度開くと(PowerShellを閉じるかどうかに関係なく)、フォントはサイズ12のラスターフォントにリセットされます。

編集:1803からアップグレード。ドイツ語ロケール。

https://aka.ms/AA37kk1

Area-Fonts Issue-Bug Product-Powershell

最も参考になるコメント

Consolasフォントを使用している場合にのみ、同じことが起こります。 Courier New、Lucida Consoleなど、他のものを使用した場合、設定は保持されます。

全てのコメント87件

Consolasフォントを使用している場合にのみ、同じことが起こります。 Courier New、Lucida Consoleなど、他のものを使用した場合、設定は保持されます。

@ 50Wliuその振る舞いを確認できます。 Consolasはラスターフォントにリセットされます。 LucidaConsoleはLucidaConsoleのままです。

これは、新しいバージョンのPSReadlineがプロンプトを表示するためにUTF8コードページを使用しているという事実と関係があるとほぼ確信しています。それを行うと、コンソールはフォントを再計算しようとします。

以前、これを追跡するのにいくつか問題があると思いましたが、それらを見つけることができないようです。 @bitcrazedどこにいたか覚えていますか? それとも、@ lzybkrと@ SteveL-MSFTの内部メールスレッドでしたか?

誰かが正確な再現を提供できますか? ショートカットに設定しているフォントのように。 どのフォントに設定されていますか?

  • Win-Rそしてpowershellます。
  • ラスターフォントで始まります。
  • 設定に移動し、フォントをConsolasに設定​​します。 [OK]をクリックします。
  • Consolasが適用されています。
  • Powershellを閉じます。
  • 以前と同じようにPowerShellを再度開きます。
  • フォントは再びラスターフォントです。
  • デフォルト設定に移動し、フォントをConsolasに設定​​します。 [OK]をクリックします。
  • Powershellを閉じます。
  • 以前と同じようにPowerShellを再度開きます。
  • フォントは再びラスターフォントです。

これはPowershellのせいでもなかったと思います。 最新の.NETFramework(4.7something)の1つが、すべてのアプリのデフォルトのコードページとして65001を使用することを突然決定し、それが起動時に他のツールやコードページと前後に反転するときに、このあたりに座っているメモがあります。終了し、フォントを再計算します。

痛みを和らげようとするバグがありますが、これが問題になっているのは、実際にはコードページ間の突然のめくりです。

ここでは再現できません。 Windows PowerShellとPowershellはどちらも、設定したフォントで起動します。

@Borkason concfg cleanを試しましたか
https://github.com/lukesampson/concfg

@ borakson -Windowsが使用するように構成されているロケールは何ですか?

@bitcrazed私はが、この問題が発生しているので、私も答えます。

私の表示言語はスペイン語(スペイン)であり、地域の形式も同様です。 Unicodeをサポートしないプログラムの言語は英語(米国)であり、UTF-8Unicodeのベータチェックボックスが選択されています。 (それがあなたが探しているものであることを願っています...あなたが何か他のものを求めていたなら私に知らせてください)

@bitcrazedドイツ語。 そして私は1803からアップグレードしました。それを意味するのを忘れました。

@doctordnsどのフォント?

@doctordnsどのフォント?

Lucida Console(18ポイント)を使用しています。 しかし、私は他の人をテストしました、そしてそれらもWindowsPowerShellの再起動後に動作します。

Consolasフォントを使用している場合にのみ、同じことが起こります。 Courier New、Lucida Consoleなど、他のものを使用した場合、設定は保持されます。

これは、 @ lzybkrの最近の作業によって修正された可能性があります//github.com/lzybkr/PSReadLine/issues/542

@ Borkason@ doctordns-修正されたら確認して閉じてください。

ありがとう。

@bitcrazedは、参照している問題が2017年に修正されたようで、私が知る限り、1809に付属しているPSReadLineのバージョンに含まれています。 さらに、この問題はWindowsInsiderビルド18277の時点でもまだ発生しています。

@bitcrazedそれは1809リリースより1年古いです。 私はそれを「最近」とは呼びません。

そして私にとっては何も変わりませんでした。 私はWindows10ビルド17763.107を使用しています

> $PSVersionTable

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

しかし、 @ 50Wliuがすでに述べたように、現在のプレビューでは修正されていません。

フィードバックへのリンクは次のとおりです: https

@bitcrazedは、問題の原因となった問題にリンクしています。

修正はこのPRにあります: https

けっこうだ。 修正がどのビルドで出荷されるかはわかっていますか?

年末までにPowerShellギャラリーに別のベータ版をリリースしようとしていますが、Windowsについてはわかりません(Windowsでは動作しません)。

@ SteveL-MSFTはWindowsに同梱されているビットを所有しているので、おそらく彼はコメントすることができます。

名前値
---- -----
PSバージョン5.1.17763.134
PSEditionデスクトップ
PSCompatibleVersions {1.0、2.0、3.0、4.0 ...}
BuildVersion 10.0.17763.134
CLRバージョン4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

ここでも同じです...ウィンドウを再インストールする準備ができて、本当に苦痛です!

この問題はフォントに関連しているようです。 フォントを「コンソール」に設定すると、WindowsのPowershellで問題が発生しました(cmdおよびPowershellコアにはこの問題はありません)が、フォントを「サラサモノSC」に変更すると、すべて正常に機能します。 「SarasaMonoSC」を使用してUTF-8文字を表示していますが、Windows 10にはデフォルトのフォントがなく、十分なUTF-8文字を表示できます。

こっちも一緒。 私のSurfaceとデスクトップPCの両方。

不思議なことに、私はこれと同じ問題を経験していると思いますが、別の方法からです。 powershell.exeを実行するためにサブプロセスを開くと、コンソールフォントがConsolasからラスターに変わります。

例1:vimを実行していて(WSL)、powershellサブコマンドを実行してシステムクリップボードを取得します。 そのコマンドを実行するたびに、コンソールフォントがラスターフォントにリセットされます。

例2:システムネームサーバーを取得するためのサブプロセスとしてPowerShellを実行するシェルスクリプトがあります。 これにより、コンソールでも同じことが起こり、ラスターフォントに切り替わります。 コンソールには何も出力されません。 すべてがサブプロセスで発生します。

本当に奇妙な部分は、コンソール(WSL)から手動でPowerShellを実行すると、問題なくフォントが変更されないことです。

@bitcrazed、@ SteveL-MSFT、@lzybkr:私は良い最小限REPROを持っています。 これは、マシンをWindows 1809にアップグレードした直後に発生し始めました。以前は、フォントとコンソールのCPを以下のようにそれぞれConsolasと65001に設定していましたが、すべて正常に機能しました。 私はUTF-8ファイルを使用しているので、CP65001は私にとって不可欠です。 私のロケールは、昔ながらのen-US、英語のWindows 10 x64 Proであり、OEMCPはデフォルトの437です。

  1. 次のレジストリキーを設定します(.regとして保存してインポートします)。 何らかの理由で、FontFamilyを変更することが重要です。デフォルトが異なる可能性があり、フォントが適用されないためです。
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"FaceName"="Consolas"
"FontFamily"=dword:00000036
"FontSize"=dword:000f0000
"FontWeight"=dword:00000190
"CodePage"=dword:0000fde9
  1. Win + R cmd.exe ENTER 。 コンソールは正しいフォントとコードページで始まります。 chcpます; 65001を出力します(そうでない場合は、 chcp 65001実行します)。
  2. コンソールで、 powershell -noprof (「-noprof」を入力して、問題がプロファイルにロードしたものに関連していないことを確認します)。

PowerShellが起動すると、コンソールフォントはすぐにラスターフォントに変わり、ウィンドウはそれに合わせてサイズが変更されます。 選択されたラスターフォントはターミナルであり、WGL4文字すらありません(キリル文字またはギリシャ語はありません)。 したがって、これは確かにバグです。

非対話型コマンドを実行しても動作が再現されるため、バグがPSReadLineに関連していることはかなり疑わしいです。

powershell -noprof -nonint -command "echo foo"

また、PowerShellをショートカット、Win + Rダイアログ、またはエクスプローラーでダブルクリックして実行すると、コンソールフォントも同様に変更されます(基本的に、コンソールはラスターフォントで開きます)。

また、いくつかのネガ。 次のいずれかの場合、フォントは変更されません

  • cmdからpowershellを呼び出す前に、 chcp 437を実行します。
  • コンソールフォントはレジストリで「LucidaConsole」に設定されています(他のすべては上記と同じままです)。 このフォントがどういうわけか「特別」であることは、このチケットのコメントですでに指摘されています。

この号のコメントに共通するテーマは、米国以外のヨーロッパのロケールでした(ドイツ語とスペイン語が言及されました)。 だから私は以下を試しました:

  1. cmd.exeを起動します
  2. コンソールコードページをchcp NNN (以下を参照)。
  3. powershell -noprof実行します。
  • NNN = 437、1252、1251、1253、850、852、869、857、737の場合-フォントの変更なし
  • NNN = 65001、858、および非WGL4ヘブライ語862、アラビア語864-フォントは変更されます。

CP 858を際立たせるものは何ですか? 私の推測では、これが鍵になるかもしれません。 CP名は「OEM多言語ラテン語1+ユーロ記号」です。

また、 chcp 1255chcp 1266 (ヘブライ語とアラビア語)は、cmd.exeでもフォントが「CourierNew」に変更されることも注目に値します。 では、PowerShellは、主な原因ではなく、どういうわけか影響を受けやすいのではないでしょうか。

必須のバージョン情報:

C:\Users\kkm> $PSVersionTable

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

また、これはおそらく無関係ですが、言及する必要があります。ディスプレイスケールが150%に設定された高DPIディスプレイがあります。

@ kkm000これはPSReadLine(https://github.com/lzybkr/PSReadLine/pull/771)で修正されましたが、使用しているWindowsのビルドには含まれていませんが、修正はWindowsの新しいビルドにチェックインされています。 PSReadLineの最新のパブリックベータ版に修正があると思います。そのため、次を使用してWindowsPowerShellにインストールできます。

install-module psreadline -AllowPrerelease -Repository PSGallery -Force
# restart PowerShell to load the new one

-AllowPrereleaseが見つからないと文句を言う場合は、PowerShellGetを更新する必要があります。

install-module powershellget -Scope CurrentUser -Repository psgallery -Force -AllowClobber
# restart PowerShell to load the new one

ただし、修正はWindowsの新しいビルドにチェックインされました。

これは、修正が将来(19H1)のインサイダーリリースに来ることを意味しますか?

@ 50Wliuはい

@ SteveL-MSFT私は@ kkm000のような同じバージョンを持っています、私はあなたにコマンドを実行しました、そして私のために働きません、私は何かが恋しいですか?

@ SteveL-MSFTこれが通常のWindowsUpdateと一緒に出荷できないのは非常に残念です。 Microsoftはアップデートで何かを壊した場合、それは更新してそれを修正していない6ヶ月以上のためにそれを延期し、次のWindowsのバージョンでそれを出荷する計画する彼らの責任だ、または人々はから修正プログラムを入手するためにフープを介してジャンプしてきました

だから....私はそのコマンドを複数回実行しなければなりませんでした

install-module powershellget -Scope CurrentUser -Repository psgallery -Force -AllowClobber

powershellをadminとして実行し、taskmgrを実行してpowershellを強制終了し、2、3回失敗したため、再度実行します。 そして…それは機能しているように見えます! $ PROFILEのカスタマイズされた表示設定は、アップグレード前と同じように動作するようになりました。

これは、以前の1809累積アップデートから最新の1809 17763.292ビルドにアップグレードした後、私に起こり始めたばかりです。 指示に従って新しいPSReadLineをインストールしましたが、そこにあるようです。

Script 2.0.0 PSReadLine {Get-PSReadLineKeyHandler, Set-PSReadLineKeyHandler, Remov
私は持っています

PSVersion 5.1.17763.134

Consolasフォントはラスターフォントに置き換えられます。

更新

これは不安定な修正によるようです。 再起動後、実行レベルに関係なく、修正は保持/機能しています。


私が今見ている興味深い行動。 私のラップトップで「修正」を実行した後
名前値
---- -----
PSバージョン5.1.17763.134
PSEditionデスクトップ
PSCompatibleVersions {1.0、2.0、3.0、4.0 ...}
BuildVersion 10.0.17763.134
CLRバージョン4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

PSをユーザーモードで実行している場合、修正は問題ありません。 PSを管理者として実行している場合、修正は機能しません。

ユーザーモードでも動作しません。

@ SteveL-MSFT、修正が機能しないようです。 また、Install-Moduleは何も変更していないようです。 私はすでにかなり最新のPowerShellGetを持っています( -AllowPrerelease確かに機能します;私のキーバインディングは最近のPSReadLineに依存します)。 数か月前(Windowsをアップグレードする前に!)にPSReadLineを最初にインストールしたので、提案されたコマンドで今日アップグレードすることを期待していましたが、実際に何かが変更されたかどうかを確認する方法がわかりません。 手伝ってもらえますか? アップグレードを試みる前に、PSReadLineのバージョンを使用しました。

C:\WINDOWS\system32> date

Saturday, February 2, 2019 13:46:02

C:\WINDOWS\system32> Get-Module PSReadline | fl Version

Version : 2.0.0

C:\WINDOWS\system32> Get-Module PSReadline | fl *

LogPipelineExecutionDetails : False
Name                        : PSReadline
Path                        : C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0\PSReadLine.psm1
ImplementingAssembly        :
Definition                  : function PSConsoleHostReadLine
                              {
                                  Microsoft.PowerShell.Core\Set-StrictMode -Off
                                  [Microsoft.PowerShell.PSConsoleReadLine]::ReadLine($host.Runspace, $ExecutionContext)
                              }

Description                 : Great command line editing in the PowerShell console host
Guid                        : 5714753b-2afd-4492-a5fd-01d9e2cff8b5
HelpInfoUri                 : https://go.microsoft.com/fwlink/?LinkId=528806
ModuleBase                  : C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0
PrivateData                 : {PSData}
Tags                        : {}
ProjectUri                  :
IconUri                     :
LicenseUri                  :
ReleaseNotes                :
RepositorySourceLocation    : https://www.powershellgallery.com/api/v2/
Version                     : 2.0.0
ModuleType                  : Script
Author                      : Microsoft Corporation
AccessMode                  : ReadWrite
ClrVersion                  : 4.0.0
CompanyName                 : Microsoft Corporation
Copyright                   : (c) Microsoft Corporation. All rights reserved.
DotNetFrameworkVersion      : 4.6.1
ExportedFunctions           : {[PSConsoleHostReadLine, PSConsoleHostReadLine]}
Prefix                      :
ExportedCmdlets             : {[Get-PSReadLineKeyHandler, Get-PSReadLineKeyHandler], [Get-PSReadLineOption,
                              Get-PSReadLineOption], [Remove-PSReadLineKeyHandler, Remove-PSReadLineKeyHandler],
                              [Set-PSReadLineKeyHandler, Set-PSReadLineKeyHandler]...}
ExportedCommands            : {[Get-PSReadLineKeyHandler, Get-PSReadLineKeyHandler], [Get-PSReadLineOption,
                              Get-PSReadLineOption], [Remove-PSReadLineKeyHandler, Remove-PSReadLineKeyHandler],
                              [Set-PSReadLineKeyHandler, Set-PSReadLineKeyHandler]...}
FileList                    : {}
CompatiblePSEditions        : {}
ModuleList                  : {}
NestedModules               : {Microsoft.PowerShell.PSReadLine}
PowerShellHostName          :
PowerShellHostVersion       :
PowerShellVersion           : 5.0
ProcessorArchitecture       : None
Scripts                     : {}
RequiredAssemblies          : {}
RequiredModules             : {}
RootModule                  : PSReadLine.psm1
ExportedVariables           : {}
ExportedAliases             : {}
ExportedWorkflows           : {}
ExportedDscResources        : {}
SessionState                : System.Management.Automation.SessionState
OnRemove                    :
ExportedFormatFiles         : {C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0\PSReadLine.format.ps1xml}
ExportedTypeFiles           : {}

それから私はあなたが提案したようにアップグレードしました:

C:\WINDOWS\system32> install-module psreadline -AllowPrerelease -Repository PSGallery -Force
C:\WINDOWS\system32> exit

Install-Moduleがしばらくの間かき回され、画面の上部に「o」の針が付いたプログレスバーが縞模様になりました。 これは何の意味もないと思いますが、Install-Moduleを繰り返すと、プログレスバーが少しの間表示されます。 しかし、新しいコンソールにはまだ元の問題があります。 また、ここでは何の変化も見られません。何か見つけられるかもしれません。 私は確かに私が持っているファイルバージョンなどを見ることができます、私は何を探すべきかわからないだけです。

これも何もしませんでした:

C:\WINDOWS\system32> Update-Module PSReadLine -AllowPrerelease
C:\WINDOWS\system32>

新しいコンソールでは、new(?)PSReadLineは同じように見えます。

C:\WINDOWS\system32> Get-Module PSReadline | fl *

LogPipelineExecutionDetails : False
Name                        : PSReadline
Path                        : C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0\PSReadLine.psm1
ImplementingAssembly        :
Definition                  : function PSConsoleHostReadLine
                              {
                                  Microsoft.PowerShell.Core\Set-StrictMode -Off
                                  [Microsoft.PowerShell.PSConsoleReadLine]::ReadLine($host.Runspace, $ExecutionContext)
                              }

Description                 : Great command line editing in the PowerShell console host
Guid                        : 5714753b-2afd-4492-a5fd-01d9e2cff8b5
HelpInfoUri                 : https://go.microsoft.com/fwlink/?LinkId=528806
ModuleBase                  : C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0
PrivateData                 : {PSData}
Tags                        : {}
ProjectUri                  :
IconUri                     :
LicenseUri                  :
ReleaseNotes                :
RepositorySourceLocation    : https://www.powershellgallery.com/api/v2/
Version                     : 2.0.0
ModuleType                  : Script
Author                      : Microsoft Corporation
AccessMode                  : ReadWrite
ClrVersion                  : 4.0.0
CompanyName                 : Microsoft Corporation
Copyright                   : (c) Microsoft Corporation. All rights reserved.
DotNetFrameworkVersion      : 4.6.1
ExportedFunctions           : {[PSConsoleHostReadLine, PSConsoleHostReadLine]}
Prefix                      :
ExportedCmdlets             : {[Get-PSReadLineKeyHandler, Get-PSReadLineKeyHandler], [Get-PSReadLineOption,
                              Get-PSReadLineOption], [Remove-PSReadLineKeyHandler, Remove-PSReadLineKeyHandler],
                              [Set-PSReadLineKeyHandler, Set-PSReadLineKeyHandler]...}
ExportedCommands            : {[Get-PSReadLineKeyHandler, Get-PSReadLineKeyHandler], [Get-PSReadLineOption,
                              Get-PSReadLineOption], [Remove-PSReadLineKeyHandler, Remove-PSReadLineKeyHandler],
                              [Set-PSReadLineKeyHandler, Set-PSReadLineKeyHandler]...}
FileList                    : {}
CompatiblePSEditions        : {}
ModuleList                  : {}
NestedModules               : {Microsoft.PowerShell.PSReadLine}
PowerShellHostName          :
PowerShellHostVersion       :
PowerShellVersion           : 5.0
ProcessorArchitecture       : None
Scripts                     : {}
RequiredAssemblies          : {}
RequiredModules             : {}
RootModule                  : PSReadLine.psm1
ExportedVariables           : {}
ExportedAliases             : {}
ExportedWorkflows           : {}
ExportedDscResources        : {}
SessionState                : System.Management.Automation.SessionState
OnRemove                    :
ExportedFormatFiles         : {C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0\PSReadLine.format.ps1xml}
ExportedTypeFiles           : {}

また、上記の@ mjoyce6500@wigsterのコメントにより、ユーザー(非管理者)コンソールを確認しましたが、以前と同様にバグも表示されます。

どうか、私はあなたが共有するかもしれないどんな助け/考えにも感謝します!

@ SteveL-MSFT、@ lzybkr、 PSGalleryに更新があるとは思わない。 最新のベータ版は、問題lzybkr / PSReadLine#771がマージされる1か月前に公開されていました。

C:\WINDOWS\system32> Find-Module PSReadline -Repository PSGallery -AllVersions -AllowPrerelease | ft name,ver*,pub*

Name       Version     PublishedDate
----       -------     -------------
PSReadLine 2.0.0-beta3 2018-09-04 21:59:13
PSReadLine 2.0.0-beta2 2018-06-04 20:28:42
PSReadLine 2.0.0-beta1 2017-12-06 07:22:16
PSReadLine 1.2         2016-01-25 20:43:22
PSReadLine 1.0.0.13    2015-02-18 00:28:18
PSReadLine 1.0.0.12    2014-08-26 19:04:26
PSReadLine 1.0.0.11    2014-06-13 21:15:30
PSReadLine 1.0.0.10    2014-06-13 02:21:13
PSReadLine 1.0.0.9     2014-06-11 21:20:46
PSReadLine 1.0.0.8     2014-05-07 22:20:52

残念ながら、beta2のように、ReleaseNotesは含まれていません。 しかし、タイミングは確かにこの可能性を排除します。

無関係なメモ、著者と会社は明らかに交換されています:

C:\WINDOWS\system32> Find-Module PSReadline -req 2.0.0-beta3 -Repository PSGallery -AllowPrerelease | fl author,compan*

Author      : Microsoft Corporation
CompanyName : lzybkr

「修正」はまだ私にとってさまざまな結果をもたらします。 ユーザーモードのPowershellは正常に機能しており、上記のコマンドを実行した後、カスタムの色/フォントに変更はありません。 管理者モードのPowershellは修正されていませんが、このバグで指摘されている動作を示しています。

@ mjoyce6500正確な再現手順を教えて

@ SteveL-MSFT、上記の私の見つけることさえできません。 現在のところ、利用可能な最高バージョンはまだPSReadLine 2.0.0-beta3 18-09-04 21:59:13であり、修正がマージされる1か月前に公開されています。

また、使用しているバージョンを確認するにはどうすればよいですか? 更新の提案を試みたことがない別のマシンで、インストールされたパッケージのChanges.txtファイルの最初の行を確認します。

C:\WINDOWS\system32> Get-Module PSReadline | fl version,modulebase

Version    : 2.0.0
ModuleBase : C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0

C:\WINDOWS\system32> gc "C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0\Changes.txt" | select -first 1
### Version 2.0.0-beta2

次に、Install-Moduleは実際に2.0.0-beta3のインストールを試み、 -forceなしで実行して確認します。

C:\WINDOWS\system32> install-module psreadline -AllowPrerelease -Repository PSGallery
WARNING: Version '2.0.0-beta2' of module 'PSReadline' is already installed at 'C:\Program
Files\WindowsPowerShell\Modules\PSReadline\2.0.0'. To install version '2.0.0-beta3', run Install-Module and add the -Force parameter, this command will install version '2.0.0-beta3' side-by-side with version '2.0.0-beta2'.

他の人からではなく、アップデートを入手している可能性はありますか?

更新後、Changes.txtの最初の行には2.0.0-beta3ヘッダーがあります。

C:\WINDOWS\system32> gc "C:\Program Files\WindowsPowerShell\Modules\PSReadline\2.0.0\Changes.txt" | select -first 1
### Version 2.0.0-beta3

そして、以前と同じ複製、管理コンソールかどうか。 Consolasフォントを使用したcmd.exeコンソールから:

C:\WINDOWS\system32>chcp 65001
Active code page: 65001

C:\WINDOWS\system32>powershell -noprof -nonint
==== BOOM! font changes ===
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\WINDOWS\system32>

もちろん、更新されたDLLがないため、機能することは期待できません。 私の質問は、他の人がそれを持っている可能性があるのか​​ということです。

ここでも同じ問題が発生し、上記の修正は効果がありませんでした。

この修正がリリースされなかったことを考えると、この一対の目の後ろから見て、修正が少数の人々にとって(少なくとも部分的に)どのように機能したかはまだ気が遠くなります。 私が困惑していると言うことは何も言うことではありません。 私の現在の考えでは、PSギャラリーは2つあり、修正はそのうちの1つに公開されており、アクセスしているのはごく少数です。

@ kkm000 PSGalleryが1つあり、beta.3は公開されている最新のPSReadLineです。 Win10に同梱されているPSReadLine2.0.0のバージョンは、PSReadLine 2.0.0のフォークであり、いくつかの新しい特定の修正が加えられているため、PSGalleryで公開されているものよりも進んでいます。

@ SteveL-MSFT
beta3をインストールしましたが、も解決され
Windows 1809と1903の両方(ビルド18334.1)

@Borkasonラスターフォントを使用しない場合にフォントを変更しないための修正は、すでにそのビルドに含まれているはずです。 どのフォントを使用していますか?

Consolasを使用しています。 PowerShellを再起動するたびに元に戻ります。

@Borkasonどのロケールを使用していますか? en-USまたは何か他のもの?

de-DE

今突然動いています。 PowerShellを10回開閉するように私を連れて行ったが、今は固執しているようだ。

再び壊れた。 したがって、どうやらそれはランダムに再び壊すか、働くかを決定します。 💢

私はそれを18334で起こさせました-完全にランダムに。 二度と起こらなかった。

違いは、ALT-Rを介してPowerShellを実行すると、フォントが同じままになることです。 スタートメニューから実行すると、前のセッションでスタートメニューから実行したコンソラに変更した場合でも、フォントがラスターにリセットされます。

(スタートメニューとは、実際にはキーボードのWindowsキーを押してから、「powershell」と入力してEnterキーを押すことを意味します。)

@ SteveL-MSFT-PowerShellギャラリーのフォントを修正したリリースを公開していません。 ただし、修正はPSReadLineリポジトリで利用できるため、自分でビルドするか、AppVeyorからビルドを取得できます。

@Borkason - Consolasを使用している場合は、フォントのバグは見られないはずです。

下位互換性があるため、コンソールのデフォルトを設定することは依然として困難です。 デフォルトは、レジストリ(コンソールアプリケーションごと)またはコンソールアプリケーションの起動に使用されるショートカットで設定できます。 コンソールチームがその問題を解決したいと思っていることは知っていますが、それは明らかに難しい問題です。

Consolasを使用している場合は、フォントのバグは見られないはずです。

その後、このバグは解決されません。これは、Consolasを使用していて、ショートカットも解決されているためです。

grafik
grafik

下位互換性があるため、コンソールのデフォルトを設定することは依然として困難です。

次に、Microsoftは、下位互換性に関係なく、コンソールを再び動作させたいだけの人のためにスクリプト/ FixItツールを提供する必要があります...

コンソールチームがその問題を解決したいと思っていることは知っていますが、それは明らかに難しい問題です。

どうやら。 そして、1903年は言うまでもなく、PowerShellのハーフフィックスを1809年に導入することも明らかに困難です...

😠

18342に更新したところ、問題は修正されたようです(18334は毎回ラスターフォントにリセットされます)。

私はまだ修正が1809にバックポートされるべきであることに同意します。

編集:アップグレード時の設定ミスの問題(https://github.com/Microsoft/console/issues/280#issuecomment-474917761を参照)。 バグはまだ修正されていません。

20H1の新規インストールを実行しました。 問題はまだあります。 🤣これは冗談ですよね?

これは、1809 Windows 10Rsatツールをインストールすることで修正できます。
WindowsのHomeエディションまたはStandardエディションを実行しているコンピューターにRSATをインストールすることはできません。
RSATは、Windows 10ProfessionalまたはEnterpriseエディションにのみインストールできます。

方法1–機能の追加の使用Windows10バージョン1809にRSATツールをインストールする

RSATツールをWindows10バージョン1809にインストールするには、[スタート]をクリックします。 [設定]をクリックし、設定ページから[アプリ]をクリックします。
右側のウィンドウの[アプリと機能]で、[オプション機能の管理]をクリックします。
次に、[+機能の追加]をクリックします。入力される機能のリストを待ちます。
RSAT機能が表示されるまで下にスクロールします。
次に、インストールするRSAT機能のいずれかを選択します。 この場合、RSAT:グループポリシー管理ツール機能を選択しています。
[インストール]をクリックします。
戻るアイコンをクリックして、機能がインストールされるまで待ちます。
これで、[スタート]> [Windows管理ツール]の下にグループポリシー管理ツールが表示されます。

サイトで動作します... Windows10バージョン1809以降にRSATツールをインストールします
投稿者PrajwalDesai最終更新日2019年1月31日

お役に立てれば....

@RobRobersonあなたはあなたが言っていることを本当に理解していますよね?

Windows 180917763.316でも同じ問題が発生します。
UTF-8オプションが有効になっているzh_Hans_CN。

プレビューバージョンは問題を解決しますか?

プレビューバージョンは問題を解決しますか?

番号。

https://github.com/Microsoft/console/issues/280#issuecomment-465837677で言ったことを取り戻します。 実際に起こったことは、すべての言語設定がリセットされ、65001コードページがオフになったということでした。 今日、スイッチを入れ直して、ラスターフォントをこんにちはと気づきました。

@ SteveL-MSFTあなたのこのコメントは、最新のInsiderビルド(たとえば、私は現在18361にいます)でも、この問題は未解決であるとまだ言っている人の数によって間違っているようです。

これの修正が大好きです。 Windowsで開発するためのConsolasが本当に好きです。

Microsoft 1903の内部リリースを使用すると、このバグがConsolasとUFT8にまだ存在することを確認できます。 Lucida Consoleフォントは機能しますが、私の回避策になります

PSReadLineの新しいアップデートに取り組んでおり、それをWindowsに取り込む方法について説明します。

pwsh 6.2.0では、この問題は解決されたようですが、msbuild 2017を使用して何かをビルドした後に戻ってきました(2015バージョンは問題ありませんでした)。 node-gypからのものであるため、これがどこで発生しているのか正確にはわかりませんが、ネイティブモジュールを(再)構築する必要がある場合、コンソールはラスターフォントに戻ります。

ありがたいことに、node-gypを実行しているときだけ、ターミナルを開くたびにフォントをリセットする必要がなくなりました。

PSReadLine 2.0.0-beta4が公開されました。これは、多くの問題に対処する必要があります(ただし、いくつかの新しい問題があります)。 https://www.powershellgallery.com/packages/PSReadLine/2.0.0-beta4

@ SteveL-MSFT2.0.0-beta4はこのバグを修正しませんでした。

gitのbash.exe + phpunit =同じ問題で通常のCMDターミナルを使用します。 スクリプトが機能し始めてから数秒後に表示されます。
PowerShellの理由がわからない...

@ SteveL-MSFT2.0.0-beta4でもバグは修正されません。

@sebgodヒントをありがとう、私はConsolas16からLucidaConsole 14に切り替えました、それは私の目にはほぼ同じです。

誰かにもう一度調べてもらいます

@ SteveL-MSFTこれを複製するには、コマンドプロンプトを開き、フォントをConsolasに設定​​します。
次にcmd /c chcp 65001 >NUL && powershell実行します

わかりました。実際の問題を特定したと思いますが、PSReadLineとは何の関係もありません。 Windows PowerShellには、コードページがConsolasフォントでサポートされているかどうかを確認するためのチェックがあります。 リストはこちらです。 UTF-8 65001はそのリストに含まれていないため、Windows PowerShellがConsolasでサポートされていないコードページを識別すると、フォントがTerminalます。 PowerShell Core 6.xにはこのコードがないため、この動作は見られません。 他の何かを壊すかもしれないので、私はこのコードを変更することを躊躇しています。 私自身のメモとして、これはConsoleControl.csの2648行目にあります。

わかりました。実際の問題を特定したと思いますが、PSReadLineとは何の関係もありません。 Windows PowerShellには、コードページがConsolasフォントでサポートされているかどうかを確認するためのチェックがあります。 リストはこちらです。 UTF-8 65001はそのリストに含まれていないため、Windows PowerShellがConsolasでサポートされていないコードページを識別すると、フォントがTerminalます。 PowerShell Core 6.xにはこのコードがないため、この動作は見られません。 他の何かを壊すかもしれないので、私はこのコードを変更することを躊躇しています。 私自身のメモとして、これはConsoleControl.csの2648行目にあります。

最新のWindows10バージョンより前はUTF-8がサポートされていなかったため、これがどのように問題を解決できるかわかりません。

@sebgodがここで何かを壊すということは、ConsolasがUTF-8に必要なすべてのグリフを持っていないことを確信しているため、誤ったレンダリングを意味します

@ SteveL-MSFT Lucida Console、Courier New、およびこの問題の影響を受けない他のすべての利用可能なフォント。ただし、コードページ65001もサポートしていません。 偶然にも、ConsolasはLucidaConsoleよりも多くのコードページをサポートしています。 では、なぜこれがConsolasでのみ発生するのでしょうか。

しかし、一般的に言えば、表示に使用するフォントはユーザーが決定する必要があります。 グリフが存在しない場合、それらはとして表示され、ユーザーはフォントを変更するかどうかを決定できます。

@Borkasonネイティブの英語を話す人の観点からは非常に明確な問題だと思いますが、私たちが予測できない国際的なユーザーに問題を引き起こす恐れがあることは間違いありません。

例として、 @ bitcrazed (Microsoftターミナルチームの別のメンバー)がWindows VTサポートhttps://github.com/curl/curl/pull/3011 (コードページを次のように変更することを含む)を実装するPRをcURLに導入したとき65001)、それは国際的なユーザーに問題を引き起こすことになりました: https

これには、代わりにワイド文字列APIを使用して現在のコードページにUTF-8を書き込むパッチが必要でした: https

その後、Microsoftターミナルチームがこれに非常に注意深く取り組みたいと思っているのは驚きではありません。

@sebgodがここで何かを壊すということは、ConsolasがUTF-8に必要なすべてのグリフを持っていないことを確信しているため、誤ったレンダリングを意味します

OK、UTF-8で定義されているすべてのグリフをカバーするWindowsが提供する単一のフォントはありません。 Cmd.exeは、フォントリンクと呼ばれるテクノロジに依存して、すべてのグリフにレンダリングを提供します。
UTF-8をシステムコードページとして設定する前は、 chcp 65001手動で使用する必要がありましたが、正常に機能していました。 フォントリンクビットは、どのような場合でも機能させるために、レジストリで手動で実行する必要があります。

@ImportTasteそれはそれとは何の関係もないと思います。 フォールバックは、Consolasが使用されている場合にのみ有効になります。 LucidaConsoleやCourierNewなどの他のフォントが使用されている場合、これは発生しません。 少なくともLucidaConsolasはConsolasと同じコードページをサポートしているので、なぜこのように行われたのか理解するのは難しいです。 海外のユーザーに問題が発生した場合(ちなみに、私はあなたが想定しているようなネイティブの英語を話す人ではありません)、Consolasを使用していないすべてのユーザーに影響します。

私の見方では、フォールバックはそもそもそこにあるべきではない(PWSH 6 + 7を参照)か、ずさんな実装でした(なぜConsolasだけなのですか?)。

@ SteveL-MSFTバグはWindowsバージョン1809でのみ導入されたものであり、文書化されていない変更であるため、修正することはまったくリスクではないと思います。具体的に変更された理由は誰にもわかりません。

@Borkason私が言ったように、それは予期せぬ問題が発生したことの関連する例でした。

おそらく1809の変更に過ぎないと聞いて驚いています。過去に、コンソールフォントがラスターに変更されるという問題が発生しました。

コンソールのデフォルトフォントがConsolasであったため、1809年にのみ検出されました。 それ以前は、Lucida Consoleだったと思いますか? そして、コードはそのフォントでも同じように機能しました。 そのコード(PowerShellチームの私のチームの前からずっと存在している)についての私の理解は、Windowsソースでは、PowerShellに使用されるショートカットが1つだけであり、そのショートカットがデフォルトのフォントを定義するということです。 そのため、デフォルトのフォントが変更されたとき、東アジアのユーザーは、フォントがサポートしていないためにグリフがレンダリングされていないと不満を漏らしました。 したがって、このコードは、フォントとロケールに互換性がないことを検出し、レンダリングするものに切り替えます。

このような一見小さな変更でも予期しないリグレッションが発生するため、WindowsPowerShellで変更を加えることを躊躇しています。

@ sebgod &all:ここにいくつかあります:

明確化

  1. UTF-8で表すことができるすべてのコードポイントのすべてのグリフを含むプラットフォームには、単一のフォントはありません。
  2. Cmd.exeはフォントについて何も知りません-Cmd.exeはシェルです
  3. コンソール(ConHost.exe)は、Windowsで従来の「ターミナルのような」コマンドラインUXを提供します
  4. コンソールの現在のテキストレンダリングエンジンはフォントフォールバックをサポートしておらず、ほとんどの絵文字をレンダリングできません-試してみると、表示できない文字(ボックス内の疑問符)が表示されます

ターミナルとコンソール

Windows Terminalは、新しい次世代のTerminalUXです。 同梱のコンソールといくつかの共通コンポーネントを共有し、さらに、実質的にすべてのUnicodeグリフを保存および表示できるテキストバッファーやテキストレンダラーなど、いくつかの新機能を追加します。

これらのコンポーネントは、最終的にはインボックスコンソールに再取り込みされますが、ターミナルv1.0をリリースし、実際の使用で十分にテストされるまではありません。

パワーシェル

@ SteveL-MSFTが指摘しているように、PowerShell Core(PSCore)はこの問題を示していません。また、PSCoreはPowerShellの将来であるため、可能な限り使用することをお勧めします。

PowerShell for Windows(PS)の動作を変更することは、Cmdの動作を修正/変更しようとすることからわかるように、一見無害に見える小さな変更でさえ、現実の世界で驚くべき破損をもたらす可能性があるため、潜在的に困難です。

そうは言っても、私はSteve&Teamと話し合い、コードページ65001に非ラスターフォント(Consolas / Lucidaなど)を選択するようにPSを変更できるかどうかを調査します。

@ sebgod &all:ここにいくつかあります:

明確化

  1. UTF-8で表すことができるすべてのコードポイントのすべてのグリフを含むプラットフォームには、単一のフォントはありません。

はい、そのため、「UTF-8で定義されているすべてのグリフをカバーするWindowsが提供する単一のフォントはありません」と言いました。

  1. Cmd.exeはフォントについて何も知りません-Cmd.exeはシェルです

はい、怠惰になってすみません。Windowsの検索ボックスに「cmd.exe」と入力するとどうなるかを参照するつもりでした。

  1. コンソール(ConHost.exe)は、Windowsで従来の「ターミナルのような」コマンドラインUXを提供します
  2. コンソールの現在のテキストレンダリングエンジンはフォントフォールバックをサポートしておらず、ほとんどの絵文字をレンダリングできません-試してみると、表示できない文字(ボックス内の疑問符)が表示されます

私が理解したように、現在のエンジンは、(ほとんどの)絵文字を含む上位のUnicodeプレーンからの文字をレンダリングできません。

今、私は気難しい必要があります、私はフォントリンクについて話していました、それはサポートされているか、少なくとも機能しています:

キーHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink下に値Lucida Console追加する
タイプがREG_MULTI_SZで、次のデータ(または同様のフォントは等幅フォントである必要があります):

MSGOTHIC.TTC,MS UI Gothic
MINGLIU.TTC,PMingLiU
SIMSUN.TTC,SimSun
GULIM.TTC,Gulim
YUGOTHM.TTC,Yu Gothic UI
MSJH.TTC,Microsoft JhengHei UI
MSYH.TTC,Microsoft YaHei UI
MALGUN.TTF,Malgun Gothic
SEGUISYM.TTF,Segoe UI Symbol

chcp 65001場合、または1803以降、システムコードページをUTF-8(ベータ版ですが、これまでのところ機能しています)に設定することで、ほとんどのUnicode基本平面グリフを表示できます。複数の言語を使用しているため、言語。

image

今では、ラスターフォントに切り替わったため、1903年以降機能していなかったConsolasを使用することを好みます。

ターミナルとコンソール

Windows Terminalは、新しい次世代のTerminalUXです。 同梱のコンソールといくつかの共通コンポーネントを共有し、さらに、実質的にすべてのUnicodeグリフを保存および表示できるテキストバッファーやテキストレンダラーなど、いくつかの新機能を追加します。

これらのコンポーネントは、最終的にはインボックスコンソールに再取り込みされますが、ターミナルv1.0をリリースし、実際の使用で十分にテストされるまではありません。

はい、私はすでに新しいターミナルUXを使用しており、もちろん非常に快適に使用できますが、現時点では漢字を入力できません(これは最終的に修正されることを願っています)

パワーシェル

@ SteveL-MSFTが指摘しているように、PowerShell Core(PSCore)はこの問題を示していません。また、PSCoreはPowerShellの将来であるため、可能な限り使用することをお勧めします。

PowerShell for Windows(PS)の動作を変更することは、Cmdの動作を修正/変更しようとすることからわかるように、一見無害に見える小さな変更でさえ、現実の世界で驚くべき破損をもたらす可能性があるため、潜在的に困難です。

そうは言っても、私はSteve&Teamと話し合い、コードページ65001に非ラスターフォント(Consolas / Lucidaなど)を選択するようにPSを変更できるかどうかを調査します。

変更によって何かが壊れる可能性があり、正確に何がわからない場合でも、ターミナルで何も変更できませんか?

PowershellCoreを使用して問題を「修正」しました。 私は最初、Powershell設定のどれも何もしないことに気づきました(しかし、それはcmd.exeの設定を変更しました)。 さまざまなことを数時間試した後、Powershell Coreに困惑し、ダウンロードするとすぐに、以前に保存した設定がPowershellCoreプレビューを開くとすぐに有効になりました。

FARマネージャーからいくつかのコマンド(スクープを含む)を実行しているときに同じ問題が発生しました-この効果は、FARの表示方法を台無しにするだけです。 コンソールでUTF-8(65001)コードページを使用するためにConsolasフォントとベータオプションが有効になっている場合にのみ発生します。 私のロケールはロシア語です。

エンドユーザーとして-プログラムが私よりも賢くなろうとするとき、それは本当に迷惑です。 一部のUTF-8記号の代わりに疑問符を使用することはできますが、このフォントの変更は、FARマネージャーのように、まったく影響を受けてはならないプログラムの表示を台無しにするだけです。 これは苦痛です。

今のところ、コンソール用にロシア語ロケールに戻す必要がありました(UTF-8から戻る)が、これにより、他のロケールのシンボルを使用して名前が付けられたファイルの操作が制限されます。 その特別なConsolasの扱いを削除できることを願っています。

私は同じ問題を抱えていますが、コンソラを使おうとした場合に限ります。 おそらく@ SteveL-MSFTは正しいです。
Lucida Consoleを試しましたが、これは正常に機能しています。 だから私はConsolasがutf-8(私のコードページ)のいくつかのグリフを欠いていると思いますか?!
Powershell Core 7は、すべてのフォントで正常に動作します。

信じられないことに、2020年にWindowsラップトップ(xps15)を購入しましたが、同じ問題が発生しています。 おそらく何百ものWindowsが後で更新され、問題は解決しません。 PS Coreが2019年の未来だったとしたら、なぜ2020年にインストールされないのですか? PS Coreがデフォルトである可能性があり、互換性の問題が必要になった場合に備えて、フォールバックとして古いPSをインストールすることもできます。 とにかく、私はWindowsターミナルをインストールして、それを試してみましょう。

@marcelomgarcia FWIW、PowerShell 7がデフォルトでWindowsにインストールされない理由は、サポートと責任の問題によるものです。 WindowsとPowerShell7のサポートは異なり、私が知る限り、弁護士はそれを行う方法を考え出していません。 今のところ、とにかく。 PowerShell7がWindows10またはWindowsServerに同梱されていることを誰もが望んでいると確信しています。

Rember:WindowsPowerShellはWindows10のコアコンポーネントであり、デフォルトのインストーラーがラップトップにインストールされているものに追加します。 これは完全にサポートされているコンポーネントFWIWです。 ただし、PowerShell 7が必要な場合、それは別個の統合されていないインストールプロセスです。

あなたのコンピュータは何語ですか?

@doctordnsの説明をありがとう。 これはやや苛立たしい問題であり、外部の誰かにとっては「単純な」問題のようです。 PowerShell7をインストールします。

私は英語の米国を使用しています。

このページは役に立ちましたか?
0 / 5 - 0 評価