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

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

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


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

お時間あったら、他のエントリもクリックして頂ければ幸いです。