PowerShell 5.1からPowerShell 7.xのコマンドレットを実行するには
PowerShellには2つの系統がある
PowerShellはコンピュータを操作するための強力なツールです。このPowerShellには2つの系統があります。
PowerShell 5.1 はWindows専用のパワーシェル。
PowerShell 7.x はWindowsだけでなくMacでも使える新しいパワーシェル。
PowerShellをMacで使っているなんて聞いたことがないので「PowerShellを使う=Windowsで使う」だと思っていいでしょう。統合すればいいのに、なぜか2系統あります。
7.xをインストールする
5.1と7.xはほぼ同じですが別物と扱われていて、両方をインストールして共存させることもできます。
7.xをインストールするにはPowerShell5.1のターミナルで
winget install Microsoft.PowerShell
とか
winget upgrade Microsoft.PowerShell
とかを実行すれば最新版が手に入ります。
PowerShell 5.1からPowerShell 7.xのコマンドレットを実行するには
PowerShell 5.1 とPowerShell 7.x はほぼ同じですが7.xでしか動かないコマンドレットがあります。
例えばこれは5.1で動きます
Invoke-RestMethod -Uri https://ipinfo.io
でもこれは動かない
Invoke-RestMethod -Uri https://ipinfo.io -NoProxy
↑プロキシサーバをバイパスするオプションが5.1では動きません。
7.xに切り替えて実行する必要があります。
画面を切り替えるのは面倒くさい、どすればいいか?
先頭にpwsh -command を付けると5.1上で7系コマンドレットが使えます。
pwsh -command Invoke-RestMethod -Uri https://ipinfo.io -NoProxy
次のようなPS1ファイルを用意して実行してみてください
Invoke-RestMethod -Uri https://ipinfo.io -NoProxy
pwsh -command Invoke-RestMethod -Uri https://ipinfo.io -NoProxy
pause
実行結果
Invoke-RestMethod : パラメーター名 'NoProxy' に一致するパラメーターが見つかりません。
発生場所 C:\temp\a.ps1:1 文字:42
+ Invoke-RestMethod -Uri https://ipinfo.io -NoProxy
+ ~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-RestMethod]、ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
ip : 183.79.248.252
city : Tokyo
region : Tokyo
country : JP
loc : 35.658581,139.745433
org : NTT Communications Corporation
postal : 105-0011
timezone : Asia/Tokyo
readme : https://ipinfo.io/missingauth
続行するには、Enter キーを押してください...:
スクリプトの一行目は失敗して、2行目は成功していることが分かります。
PowerShellは1系統に統一してほしいです。
PowerShellの参考書
アマゾン読み放題に入っていれば全部無料です↓↓↓↓
#PowerShell #コマンドレット #PowerShell5 .1 #PowerShell7 .x #プログラミング #Windows #毎日Note #毎日更新
この記事が気に入ったらサポートをしてみませんか?