PowerShell - 実行環境の設定、その他
次期のWindowsのアップデートでデフォルトがコマンドプロンプトからPowerShellに代わるそうなので学習開始です。
実行ポリシーの変更
デフォルトでは実行できなようになっている為、実行ポリシーを変更する必要がある。
- 一時的に変更してスクリプトを実行
コマンドプロンプト上で以下の様に実行、foo.ps1がPowerShellのスクリプト
C:\>powershell -ExecutionPolicy RemoteSigned .\foo.ps1
- 恒久的な変更
管理者権限でPowerShellを起動して
PS C:\> Get-ExecutionPolicy Restricted PS C:\> Set-ExecutionPolicy RemoteSigned 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y PS C:\> Get-ExecutionPolicy RemoteSigned
PowerShellのバージョン確認
自宅のWindows 10ではバージョン5.1、職場のWindows 7ではバージョン2.0
PS C:\> $PSVersionTable Name Value ---- ----- PSVersion 5.1.14393.576 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14393.576 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 PS C:\> $PSVersionTable.PSCompatibleVersions Major Minor Build Revision ----- ----- ----- -------- 1 0 -1 -1 2 0 -1 -1 3 0 -1 -1 4 0 -1 -1 5 0 -1 -1 5 1 14393 576
低バージョンモードの起動
バージョンアップする毎に機能が追加されているようです。そのため家のWindows 10で動作したスクリプトが職場のWindows 7では動作しない場合もあるため、低(旧)バージョンでPowerShellを起動して確認する必要があります。
コマンドプロンプトから
C:\>powershell -v 2
または、PowerShellのショートカットのプロパティのリンク先に「-v 2」を追加する。
コマンドレットのヘルプ
PS C:\> Get-Help コマンドレット名
設定されているエイリアスの表示
コマンドプロンプトやUnix系の基本コマンド名として類似のコマンドレットが既に割り当てられている。
PS C:\> Get-Alias または PS C:\> alias
以下は抜粋
CommandType Name ----------- ---- Alias % -> ForEach-Object Alias ? -> Where-Object Alias cat -> Get-Content Alias cd -> Set-Location Alias chdir -> Set-Location Alias clear -> Clear-Host Alias copy -> Copy-Item Alias cp -> Copy-Item Alias cpi -> Copy-Item Alias del -> Remove-Item Alias diff -> Compare-Object Alias dir -> Get-ChildItem Alias echo -> Write-Output Alias kill -> Stop-Process Alias ls -> Get-ChildItem Alias man -> help Alias md -> mkdir Alias move -> Move-Item Alias mv -> Move-Item Alias pwd -> Get-Location Alias rm -> Remove-Item Alias rmdir -> Remove-Item Alias write -> Write-Output