PowerShell

Last-modified: 2015-06-06 (土) 15:55:07

Windows PowerShell

バージョン

http://ja.wikipedia.org/wiki/Windows_PowerShell

1~4がある。

  • PowerShellでConvertTo-JSONを使うには、PowerShell 3.0以上が必要。
    • windows 7 SP1以降でサポート。インストールが必要。
    • Windows 8, 8.1 (->PowerShell 4)ではデフォルトで利用可。

バージョンを確認する

PS C:\Windows\system32> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.17400
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

実行する

PowerShellのコンソールを開いて、

PS C:\Windows\system32> .\hogehoge.ps1

カレントディレクトリにあるスクリプトを実行するには、頭に .\ を記載する。

実行を許可する

デフォルトでは.ps1の実行は禁止されている場合がある。

管理者権限でPoserShellを起動し、実行ポリシーを変更する。
選択可能なポリシーは、 http://www.atmarkit.co.jp/ait/articles/0805/16/news139.html を参照。

PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y

タスクスケジューラからの実行

注意事項がある。

ウィンドウを表示したくない場合は、WSH(VBS)? を経由して呼び出す。

変数スコープ

  • global, script, local, private
  • スコープは記述の静的構造のみによって決まるのではなく、実行にしたがって決まる
    • func A から func Bを呼び出したとき、func B からは func A のlocal 変数が見える。
  • スコープ指定なしの変数 ($local:a ではなく $a) がどのスコープを見るかも、実行にしたがって決まる。
    function a {
      $a   # script
      $a=1 # local
      $a   # local (localな変数が作られた後なので
    }