いろいろやってみるにっき

てきとーに生きている奴の日記

https化に伴い、表示できなくなっているリンクについて修復中。
2018年から遡って修正し、2015年分まで修正完了。


PowerShellをバージョン7にしてWindows Terminal起動時にPowerShellを管理者権限モードで起動する

タイトルも長いけど本文も長くなった。タイトルを先に考えて作業しながらブログに書いた。サクッといくかと思ったけど思わぬ大作に。

 

 

はじめに

PowerShellを起動するときはだいたい管理者権限である。なぜかというと、普段PowerShellよりはコマンドプロンプトcmd.exeで済むようなコマンドしか叩かないし、PowerShellを起動するときは何かの設定で管理者権限が必要だからである。

 

いつもは[Windows]+[X]でメニューを出し、

f:id:shigeo-t:20200829041936p:plain

 

(A)で管理者権限のPowerShellを起動している。

f:id:shigeo-t:20200829042049p:plain

ところでいつの頃からか

 新しいクロスプラットフォームPowerShell をお試しください https://aka.ms/pscore6

 が表示されるようになっていて非常にウザい。確かにPowerShellのバージョンを確認してみると、Windows 10 May 2020 UpdateでWindowsのバージョンを2004にしても5.1のままである。

f:id:shigeo-t:20200829042319p:plain

 

そしてWindows Terminalのほうが使い勝手がいい。

shigeo-t.hatenablog.com

 現在のバージョンはPreview版ではなく1.1に上がっている。

f:id:shigeo-t:20200829042754p:plain

 

そこで、URLにあるようにPowerShellをバージョン6にして、しかもWindows Terminal起動時に管理者権限のPowerShellをデフォルト起動するようにする。

 

PowerShellのインストール

まずはhttps://aka.ms/pscore6にアクセスする。

aka.ms

URLにあるようにバージョン6にするんだと思ったらすでにバージョン7になってた。まあ7でいい。

github.com

まったくもってWindows用だけでもいっぱいあってどれなんだよって感じだが、

f:id:shigeo-t:20200829043541p:plain

PowerShell-7.0.3-win-x64.msiをダウンロードする。起動するとこんな感じなのでどんどん進める。

f:id:shigeo-t:20200829043907p:plain

f:id:shigeo-t:20200829044004p:plain

f:id:shigeo-t:20200829044019p:plain

チェックを増やす。リモート?

f:id:shigeo-t:20200829044109p:plain

[Install]をクリック。

f:id:shigeo-t:20200829044127p:plain

f:id:shigeo-t:20200829044203p:plain

終わった。

f:id:shigeo-t:20200829044219p:plain

メニューを出して確認してみる。インストールされてた。

f:id:shigeo-t:20200829044245p:plain

起動してみるとcmd.exeみたいに黒バックである。

f:id:shigeo-t:20200829044309p:plain

起動時にもバージョン表示されているが、一応確認。確かに7.0.3になってる。EditionはDesktopからCoreに。

f:id:shigeo-t:20200829044412p:plain

 

ところで[Windows]+[X]のメニューで出てくるPowerShellPowershell(管理者)はまだバージョン5のものである。

 

まずは準備段階としてPowerShell 7をコマンド起動してみたい。下のリンクを見ると、

docs.microsoft.com

  • PowerShell は、スタート メニューまたは $env:ProgramFiles\PowerShell\<version>\pwsh.exe から起動できます。

 と書かれている。早速PowerShell 5から7を起動してみる。

f:id:shigeo-t:20200829050247p:plain

なんか怒られた。 今度はcmd.exeから。

f:id:shigeo-t:20200829050340p:plain

cmd.exeからはうまくいった。

 

よく考えてみたらPowerShell 7インストール前から開いていたPowerShellコンソールだった。PATHが通ってない。そこで新たに起動してみる。起動はできたが、なぜすでに表示されてた日本語部分が文字化けする?

f:id:shigeo-t:20200829050608p:plain

ということで仕事増えたwけど、後回し。

 

Windows Terminalの設定

 Windows Terminalを起動し、設定を開く。

f:id:shigeo-t:20200829095223p:plain

JSONファイルなのでオレのPCではVS Codeで開く。 

// 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になっている。

f:id:shigeo-t:20200829101548p:plain

 これでは管理者権限ではないので、次は"commandline"を追加する。

qiita.com

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"
            }
        ]
    },

とする。ところが起動してみると 

f:id:shigeo-t:20200829102938p:plain

エラーである。ふと思いついてそこで次のように修正した。

【修正後】

            {
                "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」と表示されているので間違いなく管理者権限である。

f:id:shigeo-t:20200829103637p:plain

 

メニューの中に「管理者として実行」があるのは気付いていたけどね。つまりデフォルトを切り替えて起動時に「管理者として実行」を入れ替えるだけでもOK。

f:id:shigeo-t:20200829183528p:plain

 

残作業

PowerShell 7に切り替えるとメッセージが英語になってしまう。調べ始めたら迷宮入りしそうだったので今回はパス。そのうち日本語化する。もしかするとバージョンが進むと勝手に日本語化されるかもしれないw