タイトルも長いけど本文も長くなった。タイトルを先に考えて作業しながらブログに書いた。サクッといくかと思ったけど思わぬ大作に。
はじめに
PowerShellを起動するときはだいたい管理者権限である。なぜかというと、普段PowerShellよりはコマンドプロンプトcmd.exeで済むようなコマンドしか叩かないし、PowerShellを起動するときは何かの設定で管理者権限が必要だからである。
いつもは[Windows]+[X]でメニューを出し、
(A)で管理者権限のPowerShellを起動している。
ところでいつの頃からか
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
が表示されるようになっていて非常にウザい。確かにPowerShellのバージョンを確認してみると、Windows 10 May 2020 UpdateでWindowsのバージョンを2004にしても5.1のままである。
そしてWindows Terminalのほうが使い勝手がいい。
現在のバージョンはPreview版ではなく1.1に上がっている。
そこで、URLにあるようにPowerShellをバージョン6にして、しかもWindows Terminal起動時に管理者権限のPowerShellをデフォルト起動するようにする。
PowerShellのインストール
まずはhttps://aka.ms/pscore6にアクセスする。
URLにあるようにバージョン6にするんだと思ったらすでにバージョン7になってた。まあ7でいい。
まったくもってWindows用だけでもいっぱいあってどれなんだよって感じだが、
PowerShell-7.0.3-win-x64.msiをダウンロードする。起動するとこんな感じなのでどんどん進める。
チェックを増やす。リモート?
[Install]をクリック。
終わった。
メニューを出して確認してみる。インストールされてた。
起動してみるとcmd.exeみたいに黒バックである。
起動時にもバージョン表示されているが、一応確認。確かに7.0.3になってる。EditionはDesktopからCoreに。
ところで[Windows]+[X]のメニューで出てくるPowerShellとPowershell(管理者)はまだバージョン5のものである。
まずは準備段階としてPowerShell 7をコマンド起動してみたい。下のリンクを見ると、
- PowerShell は、スタート メニューまたは $env:ProgramFiles\PowerShell\<version>\pwsh.exe から起動できます。
と書かれている。早速PowerShell 5から7を起動してみる。
なんか怒られた。 今度はcmd.exeから。
cmd.exeからはうまくいった。
よく考えてみたらPowerShell 7インストール前から開いていたPowerShellコンソールだった。PATHが通ってない。そこで新たに起動してみる。起動はできたが、なぜすでに表示されてた日本語部分が文字化けする?
ということで仕事増えたwけど、後回し。
Windows Terminalの設定
Windows Terminalを起動し、設定を開く。
// To view the default settings, hold "alt" while clicking on the "Settings" button. // For documentation on these settings, see: https://aka.ms/terminal-documentation { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "profiles": { "defaults": { // Put settings here that you want to apply to all profiles }, "list": [ { // Make changes here to the powershell.exe profile "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "hidden": false }, { // Make changes here to the cmd.exe profile "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "cmd", "commandline": "cmd.exe", "hidden": false }, { "guid": "{6e9fa4d2-a4aa-562d-b1fa-0789dc1f83d7}", "hidden": false, "name": "Legacy", "source": "Windows.Terminal.Wsl" }, { "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}", "hidden": false, "name": "Ubuntu-18.04", "source": "Windows.Terminal.Wsl" }, { "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell", "source": "Windows.Terminal.Azure" }, { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell", "source": "Windows.Terminal.PowershellCore" } ] }, // Add custom color schemes to this array "schemes": [], // Add any keybinding overrides to this array. // To unbind a default keybinding, set the command to "unbound" "keybindings": [] }
PowerShell 7は 一番下の「Windows.Terminal.PowershellCore」である。Windows Terminal起動時のデフォルト起動はdefaultProfileにGUIDを起動するので、
【変更前】
// To view the default settings, hold "alt" while clicking on the "Settings" button. // For documentation on these settings, see: https://aka.ms/terminal-documentation { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "profiles": {
【変更後】
// To view the default settings, hold "alt" while clicking on the "Settings" button. // For documentation on these settings, see: https://aka.ms/terminal-documentation { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "profiles": { "defaults":
とする。Settings.jsonをセーブしてWindows Terminalを起動してみる。PowerShell 7になっている。
これでは管理者権限ではないので、次は"commandline"を追加する。
Start-Process powershell.exe -Verb runas
PowerShell 7はpwsh.exeなので
【変更前】
{ "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell", "source": "Windows.Terminal.Azure" }, { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell", "source": "Windows.Terminal.PowershellCore" } ] },
【変更後】
{ "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell", "source": "Windows.Terminal.Azure" }, { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell", "commandline": "Start-Process pwsh.exe -Verb runas", "source": "Windows.Terminal.PowershellCore" } ] },
とする。ところが起動してみると
エラーである。ふと思いついてそこで次のように修正した。
【修正後】
{ "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell", "source": "Windows.Terminal.Azure" }, { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell", "commandline": "Powershell Start-Process pwsh.exe -Verb runas", "source": "Windows.Terminal.PowershellCore" } ] },
これでうまくいった。起動前にはUACに切り替わるし、タイトルバーに「Administration」と表示されているので間違いなく管理者権限である。
メニューの中に「管理者として実行」があるのは気付いていたけどね。つまりデフォルトを切り替えて起動時に「管理者として実行」を入れ替えるだけでもOK。
残作業
PowerShell 7に切り替えるとメッセージが英語になってしまう。調べ始めたら迷宮入りしそうだったので今回はパス。そのうち日本語化する。もしかするとバージョンが進むと勝手に日本語化されるかもしれないw
PowerShell 7 - kurz & gut: Behandelt auch Windows PowerShell 5
- 作者:Butz, Thorsten
- 発売日: 2020/11/30
- メディア: ペーパーバック