[PowerShell]wingetの結果を変数に代入し出力すると文字化けが発生
概要
文字コードがUTF-8で出力されるコマンド、wingetのコマンド結果を変数に代入し、
Write-Outputコマンドレットで変数の中身を確認すると文字化けしてしまいました。
PowerShellコンソールの文字コードを変更することで文字化けを回避する事ができました。
この記事のターゲット
- PowerShellユーザーの方
- wingetコマンドの結果を変数にいれて文字化けせずにコンソール出力したい方
- PowerShellの文字コードまわりの設定を一括変更可能なFunctionを知りたい方
環境
Windows PowerShell(5.1の環境)
PS C:\Users\"ユーザー名"> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.3930
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.3930
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
PS C:\Users\"ユーザー名">
PowerShell Core(6.0以降の環境)
PS C:\Users\"ユーザー名"> $PSVersionTable
Name Value
---- -----
PSVersion 7.3.11
PSEdition Core
GitCommitId 7.3.11
OS Microsoft Windows 10.0.19045
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
PS C:\Users\"ユーザー名">
事象
冒頭で説明しているとおり、winget upgrade
のコマンド結果を変数に代入し、
Write-Output
でコンソール出力すると、下記の通り文字化けが発生しました。
# Windowsパッケージマネージャー、wingetコマンドでアップデート状況の結果を変数に代入
PS C:\Users\"ユーザー名"> $result = (winget upgrade)
PS C:\Users\"ユーザー名">
# 変数の内容を表示すると文字化け発生。
PS C:\Users\"ユーザー名"> Write-Output $result
-
\
-
\
蜷榊燕 ID 繝舌・繧ク繝ァ繝ウ 蛻ゥ逕ィ蜿ッ閭ス 繧ス繝シ繧ケ
-----------------------------------------------------------------------------------------------------------------------
draw.io 22.1.18 JGraph.Draw 22.1.18 23.0.2 winget
CrystalDiskInfo 8.17.14 (64 繝薙ャ繝・ CrystalDewWorld.CrystalDiskInfo 8.17.14 9.2.2 winget
DBeaver 23.0.2 dbeaver.dbeaver 23.0.2 23.3.4 winget
Docker Desktop Docker.DockerDesktop 4.18.0 4.27.2 winget
Git Git.Git 2.40.0 2.43.0 winget
Google Chrome Google.Chrome 121.0.6167.184 122.0.6261.39 winget
Kubernetes - Minikube - A Local Kubernetes Deve窶ヲ Kubernetes.minikube 1.30.1 1.32.0 winget
Microsoft Visual Studio 2010 Tools for Office R窶ヲ Microsoft.VSTOR 10.0.50903 10.0.60912.00 winget
Microsoft Visual C++ 2015 UWP Desktop Runtime P窶ヲ Microsoft.VCLibs.Desktop.14 14.0.32530.0 14.0.33321.0 winget
Windows 繧ソ繝シ繝溘リ繝ォ 9N0DX20HK701 1.18.3181.0 1.19.10302.0 winget
SourceTree Atlassian.Sourcetree 3.4.12 3.4.16 winget
Tera Term 4.106 TeraTermProject.teraterm 4.106 4.108 winget
Tesseract-OCR - open source OCR engine UB-Mannheim.TesseractOCR 5.3.1.20230401 5.3.3.20231005 winget
VLC media player VideoLAN.VLC 3.0.18 3.0.20 winget
WinMerge 2.16.28.0 x64 WinMerge.WinMerge 2.16.28.0 2.16.38 winget
PowerShell 7.3.11.0-x64 Microsoft.PowerShell 7.3.11.0 7.4.1.0 winget
Microsoft Visual C++ 2015-2022 Redistributable 窶ヲ Microsoft.VCRedist.2015+.x64 14.36.32532.0 14.38.33135.0 winget
Oracle VM VirtualBox 7.0.6 Oracle.VirtualBox 7.0.6 7.0.14 winget
MySQL Workbench 8.0 CE Oracle.MySQLWorkbench 8.0.28 8.0.36 winget
Dell Display Manager Dell.DisplayManager < 2.0 2.2.0.43 winget
Node.js OpenJS.NodeJS.LTS 18.16.0 20.11.0 winget
Microsoft Windows Desktop Runtime - 6.0.26 (x64) Microsoft.DotNet.DesktopRuntime.6 6.0.26 6.0.27 winget
Microsoft .NET Runtime - 6.0.26 (x64) Microsoft.DotNet.Runtime.6 6.0.26 6.0.27 winget
Microsoft Visual C++ 2015-2022 Redistributable 窶ヲ Microsoft.VCRedist.2015+.x64 14.34.31938.0 14.38.33135.0 winget
Microsoft .NET SDK 7.0.405 (x64) Microsoft.DotNet.SDK.7 7.0.405 7.0.406 winget
Microsoft Visual C++ 2013 Redistributable (x86)窶ヲ Microsoft.VCRedist.2013.x64 12.0.30501.0 12.0.40664.0 winget
26 繧「繝・・繧ー繝ャ繝シ繝峨r蛻ゥ逕ィ縺ァ縺阪∪縺吶・
PS C:\Users\"ユーザー名">
一方で変数に代入せずに、そのままwinget upgrade
コマンドを実行すると正常に表示されます。
PS C:\Users\"ユーザー名"> winget upgrade
名前 ID バージョン 利用可能 ソース
-----------------------------------------------------------------------------------------------------------------------
draw.io 22.1.18 JGraph.Draw 22.1.18 23.0.2 winget
CrystalDiskInfo 8.17.14 (64 ビット) CrystalDewWorld.CrystalDiskInfo 8.17.14 9.2.2 winget
DBeaver 23.0.2 dbeaver.dbeaver 23.0.2 23.3.4 winget
Docker Desktop Docker.DockerDesktop 4.18.0 4.27.2 winget
Git Git.Git 2.40.0 2.43.0 winget
Google Chrome Google.Chrome 121.0.6167.184 122.0.6261.39 winget
Kubernetes - Minikube - A Local Kubernetes Deve… Kubernetes.minikube 1.30.1 1.32.0 winget
Microsoft Visual Studio 2010 Tools for Office R… Microsoft.VSTOR 10.0.50903 10.0.60912.00 winget
Microsoft Visual C++ 2015 UWP Desktop Runtime P… Microsoft.VCLibs.Desktop.14 14.0.32530.0 14.0.33321.0 winget
Windows ターミナル 9N0DX20HK701 1.18.3181.0 1.19.10302.0 winget
SourceTree Atlassian.Sourcetree 3.4.12 3.4.16 winget
Tera Term 4.106 TeraTermProject.teraterm 4.106 4.108 winget
Tesseract-OCR - open source OCR engine UB-Mannheim.TesseractOCR 5.3.1.20230401 5.3.3.20231005 winget
VLC media player VideoLAN.VLC 3.0.18 3.0.20 winget
WinMerge 2.16.28.0 x64 WinMerge.WinMerge 2.16.28.0 2.16.38 winget
PowerShell 7.3.11.0-x64 Microsoft.PowerShell 7.3.11.0 7.4.1.0 winget
Microsoft Visual C++ 2015-2022 Redistributable … Microsoft.VCRedist.2015+.x64 14.36.32532.0 14.38.33135.0 winget
Oracle VM VirtualBox 7.0.6 Oracle.VirtualBox 7.0.6 7.0.14 winget
MySQL Workbench 8.0 CE Oracle.MySQLWorkbench 8.0.28 8.0.36 winget
Dell Display Manager Dell.DisplayManager < 2.0 2.2.0.43 winget
Node.js OpenJS.NodeJS.LTS 18.16.0 20.11.0 winget
Microsoft Windows Desktop Runtime - 6.0.26 (x64) Microsoft.DotNet.DesktopRuntime.6 6.0.26 6.0.27 winget
Microsoft .NET Runtime - 6.0.26 (x64) Microsoft.DotNet.Runtime.6 6.0.26 6.0.27 winget
Microsoft Visual C++ 2015-2022 Redistributable … Microsoft.VCRedist.2015+.x64 14.34.31938.0 14.38.33135.0 winget
Microsoft .NET SDK 7.0.405 (x64) Microsoft.DotNet.SDK.7 7.0.405 7.0.406 winget
Microsoft Visual C++ 2013 Redistributable (x86)… Microsoft.VCRedist.2013.x64 12.0.30501.0 12.0.40664.0 winget
26 アップグレードを利用できます。
PS C:\Users\"ユーザー名">
コマンドを直接実行しても文字化けする場合
もし、wingetコマンドを直接実行した結果がそもそも文字化けしている場合は本記事、解決方法の前にPowerShellウィンドウの設定を見直す必要があります。
規定値で設定されているフォントは日本語対応されていないフォントなので、BIZ UDゴシック
や MS ゴシック
など日本語対応しているフォントに変更する必要があると思われます。
こちらの公式ページでフォントの設定方法が解説されていますので、ご参考にどうぞ。
原因
この現象を調べた結果、PowerShellでコンソール出力する際の文字コードの規定値([console]::OutputEncoding
)が Shift JIS
になっている事が原因のようでした。
回避方法としては、この設定をUTF-8
に変更する方法で解決できます。
推測・想像の見解:変数代入 → 変数出力 → 文字化け の流れ < クリックで折りたたみが開く >
コンソール出力の文字コード設定「[console]::OutputEncoding
」が厳密にどのようなロジックで文字化けするのか把握できていません。
おそらく、変数に代入されるまでは下記のような流れで文字化けが発生したのだと思います。
- コマンド実行
- コマンド出力結果がコンソール文字コードに基づき
Shift JIS
で表示される
(ここで文字化けが発生) - 文字化けで表示された出力結果を変数に代入
- 変数をコンソール出力すると文字化け発生!
わからない点:直接コマンドを実行すると文字化けしない < クリックで折りたたみが開く >
文字コードが Shift JIS
の状態で変数代入・変数出力で文字化けしたケースに関しては、
[console]::OutputEncoding
の設定値が要因となったことで間違いないと思います。
ただ、同じ Shift JIS
にもかかわらず“直接コマンドを実行したケースでは、文字化けしなかった”というケースに関しては、
どのようなロジックで正常に出力できているのか把握できていません。
調べても情報が無く何も確証・根拠がない見解ですが、winget
コマンドを直接実行する時にだけ、
コマンド側で文字コードの制御が働き、自動で文字コードの変換が行われているのではと推測しています。
(wingetのソースを読めば何かわかる…かも)
解決方法
解決方法を2つ紹介します。まずは、ピンポイントで問題の箇所を変更する方法。
[console]::OutputEncodingを“UTF-8”にする方法
今回、文字化けしてしまったコマンドは、winget upgrade
。
このwinget
コマンドの文字コードは「UTF-8
」のようで下記のコマンドで文字コードを「UTF-8
」にあわせた結果、文字化けしないで正常に表示できました。
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
設定できる文字コードの一覧 < クリックで折りたたみが開く >
他の文字コードにも変更可能です。
[console]::OutputEncoding = [System.Text.Encoding]::"設定したい文字コード"
-
System.Text.Encoding
で設定できる文字コードの一覧設定可能な文字コード 説明 ASCII ASCII (7 ビット) 文字セットのエンコーディングを取得します。 BigEndianUnicode ビッグ エンディアンのバイト順を使用する UTF-16 形式のエンコーディングを取得します。 Default この .NET 実装の既定のエンコードを取得します。
* PowerShell 5.x(Desktop) だとShift JIS
。PowerShell 7.x(Core)だとUTF-8
。Latin1 Latin1 文字セット (ISO-8859-1) のエンコードを取得します。 Unicode リトル エンディアン バイト順を使用する UTF-16 形式のエンコーディングを取得します。 UTF32 リトル エンディアン バイト順を使用する UTF-32 形式のエンコーディングを取得します。 UTF7 UTF-7 形式のエンコーディングを取得します。 UTF8 UTF-8 形式のエンコーディングを取得します。 -
参考情報
https://learn.microsoft.com/ja-jp/dotnet/api/system.text.encoding#properties
実際のコマンド結果(コンソール出力の文字コードをUTF-8に変更) < クリックで折りたたみが開く >
# 変更前がShift JISであることを確認
PS C:\Users\"ユーザー名"> [console]::OutputEncoding
EncodingName : Japanese (Shift-JIS)
WebName : shift_jis
HeaderName : iso-2022-jp
BodyName : iso-2022-jp
Preamble :
WindowsCodePage :
IsBrowserDisplay :
IsBrowserSave :
IsMailNewsDisplay :
IsMailNewsSave :
IsSingleByte : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : False
CodePage : 932
PS C:\Users\"ユーザー名">
# コンソールの文字コードをUTF-8に変更
PS C:\Users\"ユーザー名"> [console]::OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\Users\"ユーザー名">
# 設定が反映されているか確認
PS C:\Users\"ユーザー名"> [console]::OutputEncoding
Preamble :
BodyName : utf-8
EncodingName : Unicode (UTF-8)
HeaderName : utf-8
WebName : utf-8
WindowsCodePage : 1200
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
IsSingleByte : False
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : False
CodePage : 65001
PS C:\Users\"ユーザー名">
# もう一度、コマンドを実行してみて結果、正常に表示されたことを確認
PS C:\Users\"ユーザー名"> $result = (winget upgrade)
PS C:\Users\"ユーザー名">
PS C:\Users\"ユーザー名"> Write-Output $result
-
\
|
-
\
名前 ID バージョン 利用可能 ソース
-----------------------------------------------------------------------------------------------------------------------
draw.io 22.1.18 JGraph.Draw 22.1.18 23.0.2 winget
CrystalDiskInfo 8.17.14 (64 ビット) CrystalDewWorld.CrystalDiskInfo 8.17.14 9.2.2 winget
DBeaver 23.0.2 dbeaver.dbeaver 23.0.2 23.3.4 winget
Docker Desktop Docker.DockerDesktop 4.18.0 4.27.2 winget
Git Git.Git 2.40.0 2.43.0 winget
Google Chrome Google.Chrome 121.0.6167.184 122.0.6261.39 winget
Kubernetes - Minikube - A Local Kubernetes Deve… Kubernetes.minikube 1.30.1 1.32.0 winget
Microsoft Visual Studio 2010 Tools for Office R… Microsoft.VSTOR 10.0.50903 10.0.60912.00 winget
Microsoft Visual C++ 2015 UWP Desktop Runtime P… Microsoft.VCLibs.Desktop.14 14.0.32530.0 14.0.33321.0 winget
Windows ターミナル 9N0DX20HK701 1.18.3181.0 1.19.10302.0 winget
SourceTree Atlassian.Sourcetree 3.4.12 3.4.16 winget
Tera Term 4.106 TeraTermProject.teraterm 4.106 4.108 winget
Tesseract-OCR - open source OCR engine UB-Mannheim.TesseractOCR 5.3.1.20230401 5.3.3.20231005 winget
VLC media player VideoLAN.VLC 3.0.18 3.0.20 winget
WinMerge 2.16.28.0 x64 WinMerge.WinMerge 2.16.28.0 2.16.38 winget
PowerShell 7.3.11.0-x64 Microsoft.PowerShell 7.3.11.0 7.4.1.0 winget
Microsoft Visual C++ 2015-2022 Redistributable … Microsoft.VCRedist.2015+.x64 14.36.32532.0 14.38.33135.0 winget
Oracle VM VirtualBox 7.0.6 Oracle.VirtualBox 7.0.6 7.0.14 winget
MySQL Workbench 8.0 CE Oracle.MySQLWorkbench 8.0.28 8.0.36 winget
Dell Display Manager Dell.DisplayManager < 2.0 2.2.0.43 winget
Node.js OpenJS.NodeJS.LTS 18.16.0 20.11.0 winget
Microsoft Windows Desktop Runtime - 6.0.26 (x64) Microsoft.DotNet.DesktopRuntime.6 6.0.26 6.0.27 winget
Microsoft .NET Runtime - 6.0.26 (x64) Microsoft.DotNet.Runtime.6 6.0.26 6.0.27 winget
Microsoft Visual C++ 2015-2022 Redistributable … Microsoft.VCRedist.2015+.x64 14.34.31938.0 14.38.33135.0 winget
Microsoft .NET SDK 7.0.405 (x64) Microsoft.DotNet.SDK.7 7.0.405 7.0.406 winget
Microsoft Visual C++ 2013 Redistributable (x86)… Microsoft.VCRedist.2013.x64 12.0.30501.0 12.0.40664.0 winget
26 アップグレードを利用できます。
PS C:\Users\"ユーザー名">
PowerShellにおける文字コードまわりの設定を一括変更するFunction
PowerShellの文字コードについてネットで検索した際、こちらの記事で文字コードまわりを一括変更できるFunctionが紹介されていました。
記事内にもあるとおり、このFunctionはPowerShellのDesktop Edition(5.x以前)の環境を想定しているFunctionでした。
PowerShellのバージョンによる文字コードの変化点
具体的に説明すると、PowerShell のCore Edition(6.0以降)の環境では、[System.Text.Encoding]::Default
の結果がsjis
ではなくutf8
となる為、
意図する動作と異なる結果となりました。
元記事を参考にさせて頂き、PowerShell Coreでも使用できるFunctionを作成してみました。
Function SetPsOutputEncoding {
Param (
[System.String]$charcode = 'reset_encoding'
)
switch ($charcode) {
# 文字エンコードをUTF8に設定する
'utf8' {
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
$global:OutputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
}
# 文字エンコードをShift JIS(SJIS)に設定する
'sjis' {
# $PSDefaultParameterValues['*:Encoding'] = 'default'について
# この設定はCore以外(5.1以前)の環境でのみShift JISで設定される。
# Core環境のデフォルト値は、UTF-8でありUTF-8で設定されてしまう。
# また、Shift JISのパラメーターも存在しない為、Core環境でShift JISの設定は不可となる。
$PSDefaultParameterValues['*:Encoding'] = 'default'
$global:OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
}
# 文字エンコードをASCIIに設定する
'ascii' {
$PSDefaultParameterValues.Remove('*:Encoding')
$global:OutputEncoding = [System.Text.Encoding]::ASCII
[console]::OutputEncoding = [System.Text.Encoding]::ASCII
}
# デフォルトパラメータの文字エンコード指定を解除する
'rm_encoding' {
$PSDefaultParameterValues.Remove('*:Encoding')
}
# 文字エンコード設定を初期状態に戻す
'reset_encoding' {
$PSDefaultParameterValues.Remove('*:Encoding')
If ($PSVersionTable.PSEdition -eq 'Core') {
# Core の場合
$global:OutputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
}
else {
# Core 以外の場合(PowerShell 5.1 以前)
$global:OutputEncoding = [System.Text.Encoding]::ASCII
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
}
}
}
}
# 実行テスト
SetPsOutputEncoding 'utf8'
実際のコマンド結果(文字コード設定の一括変更) < クリックで折りたたみが開く >
PS C:\Users\"ユーザー名"> Function SetPsOutputEncoding {
>> Param (
>> [System.String]$charcode = 'reset_encoding'
>> )
>>
>> switch ($charcode) {
>> 'utf8' {
>> $PSDefaultParameterValues['*:Encoding'] = 'utf8'
>> $global:OutputEncoding = [System.Text.Encoding]::UTF8
>> [console]::OutputEncoding = [System.Text.Encoding]::UTF8
>> }
>> 'sjis' {
>> $PSDefaultParameterValues['*:Encoding'] = 'default'
>> $global:OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
>> [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
>> }
>> 'ascii' {
>> $PSDefaultParameterValues.Remove('*:Encoding')
>> $global:OutputEncoding = [System.Text.Encoding]::ASCII
>> [console]::OutputEncoding = [System.Text.Encoding]::ASCII
>> }
>> 'rm_encoding' {
>> $PSDefaultParameterValues.Remove('*:Encoding')
>> }
>> 'reset_encoding' {
>> $PSDefaultParameterValues.Remove('*:Encoding')
>>
>> If ($PSVersionTable.PSEdition -eq 'Core') {
>> $global:OutputEncoding = [System.Text.Encoding]::UTF8
>> [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
>> }
>> else {
>> $global:OutputEncoding = [System.Text.Encoding]::ASCII
>> [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('shift_jis')
>> }
>> }
>> }
>> }
PS C:\Users\"ユーザー名">
PS C:\Users\"ユーザー名"> SetPsOutputEncoding 'utf8'
PS C:\Users\"ユーザー名">
PS C:\Users\"ユーザー名"> $result = (winget upgrade)
PS C:\Users\"ユーザー名">
PS C:\Users\"ユーザー名"> Write-Output $result
-
\
-
\
名前 ID バージョン 利用可能 ソース
-----------------------------------------------------------------------------------------------------------------------
draw.io 22.1.18 JGraph.Draw 22.1.18 23.0.2 winget
CrystalDiskInfo 8.17.14 (64 ビット) CrystalDewWorld.CrystalDiskInfo 8.17.14 9.2.2 winget
DBeaver 23.0.2 dbeaver.dbeaver 23.0.2 23.3.4 winget
Docker Desktop Docker.DockerDesktop 4.18.0 4.27.2 winget
Git Git.Git 2.40.0 2.43.0 winget
Google Chrome Google.Chrome 121.0.6167.184 122.0.6261.39 winget
Kubernetes - Minikube - A Local Kubernetes Deve… Kubernetes.minikube 1.30.1 1.32.0 winget
Microsoft Visual Studio 2010 Tools for Office R… Microsoft.VSTOR 10.0.50903 10.0.60912.00 winget
Microsoft Visual C++ 2015 UWP Desktop Runtime P… Microsoft.VCLibs.Desktop.14 14.0.32530.0 14.0.33321.0 winget
Windows ターミナル 9N0DX20HK701 1.18.3181.0 1.19.10302.0 winget
SourceTree Atlassian.Sourcetree 3.4.12 3.4.16 winget
Tera Term 4.106 TeraTermProject.teraterm 4.106 4.108 winget
Tesseract-OCR - open source OCR engine UB-Mannheim.TesseractOCR 5.3.1.20230401 5.3.3.20231005 winget
VLC media player VideoLAN.VLC 3.0.18 3.0.20 winget
WinMerge 2.16.28.0 x64 WinMerge.WinMerge 2.16.28.0 2.16.38 winget
PowerShell 7.3.11.0-x64 Microsoft.PowerShell 7.3.11.0 7.4.1.0 winget
Microsoft Visual C++ 2015-2022 Redistributable … Microsoft.VCRedist.2015+.x64 14.36.32532.0 14.38.33135.0 winget
Oracle VM VirtualBox 7.0.6 Oracle.VirtualBox 7.0.6 7.0.14 winget
MySQL Workbench 8.0 CE Oracle.MySQLWorkbench 8.0.28 8.0.36 winget
Dell Display Manager Dell.DisplayManager < 2.0 2.2.0.43 winget
Node.js OpenJS.NodeJS.LTS 18.16.0 20.11.0 winget
Microsoft Windows Desktop Runtime - 6.0.26 (x64) Microsoft.DotNet.DesktopRuntime.6 6.0.26 6.0.27 winget
Microsoft .NET Runtime - 6.0.26 (x64) Microsoft.DotNet.Runtime.6 6.0.26 6.0.27 winget
Microsoft Visual C++ 2015-2022 Redistributable … Microsoft.VCRedist.2015+.x64 14.34.31938.0 14.38.33135.0 winget
Microsoft .NET SDK 7.0.405 (x64) Microsoft.DotNet.SDK.7 7.0.405 7.0.406 winget
Microsoft Visual C++ 2013 Redistributable (x86)… Microsoft.VCRedist.2013.x64 12.0.30501.0 12.0.40664.0 winget
26 アップグレードを利用できます。
PS C:\Users\"ユーザー名">
別の記事で文字コードの設定情報をPowerShellウィンドウのタイトルに反映するFunctionも作成しています。
文字コードを変更した後、設定内容をタイトルに表示させたい方は、下記を参考に設定してください。
まとめ
-
事象
winget update
コマンドを変数に入れてからコンソール表示すると文字化けが発生。 -
原因
コンソール出力時の文字コード([console]::OutputEncoding
)の規定値Shift JIS
となっていて、winget
コマンドで表示されるUTF-8
と食い違っていたから。 -
解決方法
コンソール出力時の文字コード([console]::OutputEncoding
)の設定をUTF-8
に変更する。コンソール出力の文字コードをUTF-8に変更する方法[console]::OutputEncoding = [System.Text.Encoding]::UTF8
関連記事
Discussion