Powershell 2

*nix 経験者向け Powershell 環境設定とか

Powershell Profile

.bashrc などのシェルの初期設定ファイルあるよね。

$profile ってのが PS 的 run script

try
PS> $profile

C:\Users\xyz\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

PS> notepad $profile

Path not found
お、って感じでエラー出るよね。つまり $profile のパスはデフォルトで決まってるが最初から存在しているわけではないと。やらなくてもいいんだけど PS 的に一応確認してみると。

PS> test-path $profile

False

で、裏とれたのでエクスプローラ で途中のパスのフォルダ My Documents\WindowsPowerShell ごと作っちゃうか、PS からダイレクトにコマンで作るべし。

PS> New-Item -path $profile -ItemType file -Force

PS> notepad $profile

で、$profile の中味はエイリアス書き足そうが、関数書き足そうが、なんでもいーんだけど、とりあえず使い始めはエイリアスだろうから、その例。

Set-Alias grep Select-String # grep という名前で Select-String を実行

sal  note c:\windows\notepad.exe # 無論 Set-Alias = sal だっていい

ちなみに、PS のコメントは # で行コメント、PS ver2 からは <# #> で囲んでブロックコメントおk。
さて、$profile 書いたから、次から PS 起動すれば読んでくれる、かと思いきや、なんかエラー出た! X(
あり得へん世界や。。。
なんでかっつーと、PS (というか Windows) の設定で PS が実行できるコードに制限がかかっているため。
これは、ネットからゲットしたり、自分で作成したような任意の PS のスクリプトソース(通常 .ps1 拡張子)でもそうだし、今書いたばかりの $profile というパスに存在する PS 初期設定スクリプトでも皆同じで、Windows の標準設定では署名されていないスクリプトは実行したらあかんことになってる。
つーことで、とりあえずしゃーないから制限緩めたるかね。(無論 その risk は分かっとけよ)

PS> get-executionpolicy # 現在のポリシーを確認
PS> set-executionpolicy RemoteSigned # 又はよりリスキーな Unrestricted

ちなみにポリシーの種類と意味は

  • Restricted: デフォルト設定。いかなるスクリプトファイルも実行不能。(なめてんのか)
  • AllSigned: 署名ありなら実行可能
  • RemoteSigned: リモート(ネットとか)からゲットしたファイルには署名必要。ローカルで自分で書いたスクリプトはおk.
  • Unrestricted: 文字通り無制限。これにするなら自己責任で。
ちなみに上の set-executionpolicy もエラー出たとか??
あんた本当に素人だな。。。
Windows のシステムポリシーの設定とかそーいうことするんだから管理者権限いるに決まっとる。Powershell を管理者として実行して、そこで上のコマンドも実行するんや。
つーことで、なんつーか、$profile の書き方覚えたついでに、ローカルでスクリプト書いて実行するための準備もできた、一石二鳥やな。
なんか疲れてエセ関西弁が出てきたから、これは危険信号や。もう寝るで。
ほなさいなら。

次回

grep とか、find とかやろか

Links

http://www.atmarkit.co.jp/fwin2k/win2ktips/1023ps1sec/ps1sec.html

http://technet.microsoft.com/ja-jp/library/bb613488(VS.85).aspx

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s