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
タスクスケジューラからの実行
注意事項がある。
- PowerShell.exe のパスも指定する。
- PowerShellのウィンドウはどうしても表示されてしまう。
- -WindowStyle hidden も効かない。
ウィンドウを表示したくない場合は、WSH(VBS)? を経由して呼び出す。
- http://web.archive.org/web/20070216074902/http://blog.sapien.com/current/2006/12/20/schedule-hidden-powershell-tasks.html にしたがってスクリプトを作成。たとえば kick.vbs とする。
- タスクスケジューラには
- プログラム/スクリプト欄に、 wscript.exe と指定。
- オプションに、kick.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な変数が作られた後なので }
- ISE で実行したスクリプトは、scriptスコープ=globalスコープ の扱い? ISE外で動かしたときと挙動が異なる。