LoginSignup
1
2

More than 5 years have passed since last update.

PowerShell ISEでスクリプトを旧バージョン互換実行する

Posted at

例えば開発機のPowerShellのバージョンが 4とか5とかで、本番機が大人の事情でバージョン2とか3だった場合用のTips。

まずはただ実行するだけの場合、以下のようにSide by sideで実行出来る。

>$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.10586.12
PSCompatibleVersions           {1.0, 2.0, 3
BuildVersion                   10.0.10586.1
CLRVersion                     4.0.30319.42
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

>powershell -v 2
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

>$PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.8670
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

PSVersionの値が5.0.10586.12から2.0になっているのがわかる。
-vオプションの後は任意の値を指定することで異なるバージョンでの起動が可能だ。

ところが、これをこのままPowerShell ISEのコンソール上で実行しても期待通りの動きにはならなかった。

>powershell -v 2
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

この状態でPowerShell ISE側はスクリプトを実行した状態で応答を待っている状態に移行してしまう。
これ以降は何も応答が無い。

実行さえできればいいのだが、デバッグなどを行いたい場合はそうもいかない。
上手いこと無いかと考えたら、シンプルに以下の方法で実行が出来た。

>powershell.exe -v 2 -c .¥script.ps1

-cオプションを使用し、実行したいスクリプトファイルを指定する。
そうする事でPowerShel ISEのコンソール上でスクリプトの実行結果が返ってくる。
もちろん、ステップ実行や変数の参照なども可能だった。

以上

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2