PowerShellの使い方

#0. はじめに
個人的メモです。あまり丁寧には書いていません。

#1. 予備知識
## 用語

| 用語 | 説明 |
|:--------------|:----|
|アイテム        | ファイル、ディレクトリ、レジストリなどの総称    |
|ロケーション    | カレントディレクトリのパス    |
|コマンドレット  | Linuxやコマンドプロンプトでいうところのコマンド |

## 注意点
* 出力はテキストではなく、オブジェクト
* 大量出力するようなバイナリファイルの実行は避けるのが無難

#2. ポリシーの変更
PowerShellはデフォルトではスクリプトの実行ポリシーが厳しくそのままでは実行できません。

```ps1:ポリシーチェック
Get-ExecutionPolicy
```

デフォルトでは「Restricted」となっているはずです。詳細はステータスは下記のMSドキュメントを参照。
[Get-ExecutionPolicy コマンドレットの使用](http://technet.microsoft.com/ja-jp/library/ee176847.aspx)


```ps1:ポリシー変更
Set-ExecutionPolicy RemoteSigned
```

これを実行することで、「ダウンロードしたスクリプトは信頼できる発行元が署名した場合にのみ実行できます」ということなので、ローカルのスクリプトは実行できるようになります。

#3. exeファイルの実行とエイリアス
アンパサンドとシングルクオート用いて、exeファイルの実行を行うことができます。
下記では64bit環境のWindowsで32bit版IEを起動するための例を記載します。

```ps1:exeファイルの実行
& 'C:\Program Files (x86)\Internet Explorer\iexplore.exe'
```

上記実行ファイルにieというエイリアスを設定するためには以下のようにします。

```ps1:エイリアスの作成
Set-Alias ie "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
```

設定されているエイリアスは以下のコマンドで確認できます。

```ps1:エイリアスの確認
Get-Alias
```

設定しているエイリアスを削除するためには以下のコマンドを実行します。

```ps1:エイリアスの削除
Remove-Item alias:ie
```

#4. よく使うコマンドレット
* ファイル操作系

| コマンドレット | エイリアス | 説明 |TechNet|
|:--------------|:----------|:-----|:-----------|
|Get-Children   | dir, gci, ls    |子アイテムの取得 |[Link](http://technet.microsoft.com/ja-jp/library/hh849800.aspx)|
|Copy-Item      | copy, cp, cpi | アイテムのコピー | [Link](http://technet.microsoft.com/ja-jp/library/hh849793.aspx)|
|Move-Item      | mi, move, mv | アイテムの移動 | [Link](http://technet.microsoft.com/ja-jp/library/hh849852.aspx)|
|Rename-Item      | ren, rni | アイテムのリネーム | [Link](http://technet.microsoft.com/ja-jp/library/hh849763.aspx)|
|Remove-Item      | del, erase, rd, ri, rm, rmdir | アイテムの削除 | [Link](http://technet.microsoft.com/ja-jp/library/hh849765.aspx)|
|Get-Content    | cat, gc, type | アイテムの内容を取得 | [Link](http://technet.microsoft.com/ja-jp/library/hh849787.aspx)|
|Select-String  | sls        | ファイルまたは文字列のテキスト検索<br>Linuxで言うところのgrepコマンド<br>パイプ時はオブジェクトが渡るのでLinux系とは少し動作が異なる  | [Link](http://technet.microsoft.com/ja-jp/library/hh849903.aspx)|

* ロケーション系

| コマンドレット | エイリアス | 説明 |TechNet|
|:--------------|:----------|:-----|:-----------|
|Get-Location   | gl, pwd | ロケーションの取得 | [Link](http://technet.microsoft.com/ja-jp/library/hh849835.aspx)|
|Set-Location   | cd, chdir, sl | ロケーションの設定 | [Link](http://technet.microsoft.com/ja-jp/library/hh849850.aspx)|
|Push-Location   | pushd | ロケーションをスタックに格納 | [Link](http://technet.microsoft.com/ja-jp/library/hh849855.aspx)|
|Pop-Location   | popd | ロケーションをスタックから取り出す | [Link](http://technet.microsoft.com/ja-jp/library/hh849842.aspx)|
  
* システム管理系

| コマンドレット | エイリアス | 説明 |TechNet|
|:--------------|:----------|:-----|:-----------|
|Get-Service      | gsv  | サービスの取得 | [Link](http://technet.microsoft.com/ja-jp/library/hh849804.aspx)|
|Start-Service      | sasv  | サービスの起動 | [Link](http://technet.microsoft.com/ja-jp/library/hh849825.aspx)|
|Stop-Service      | spsv  | サービスの停止 | [Link](http://technet.microsoft.com/ja-jp/library/hh849790.aspx)|
|Restart-Service      | なし  | サービスの再起動 | [Link](http://technet.microsoft.com/ja-jp/library/hh849823.aspx)|
|Get-Process      | gps, ps  | プロセスの取得 | [Link](http://technet.microsoft.com/ja-jp/library/hh849832.aspx)|
|Stop-Process      | kill, spps  | プロセスの停止 | [Link](http://technet.microsoft.com/ja-jp/library/hh849781.aspx)|
|Get-EventLog      | なし  | イベントログの取得 | [Link](http://technet.microsoft.com/ja-jp/library/hh849834.aspx)|
|Show-EventLog      | なし  | イベントログ(GUI)の起動 | [Link](http://technet.microsoft.com/ja-jp/library/hh849826.aspx)|

* オブジェクト操作系

~~サンプルコードとか載せながらでないとわかりにくいので次回に書く予定~~ 

2014/12/9 追記
書きました。
http://qiita.com/Kirito1617/items/bd3937fb26c668eca078

* その他

| コマンドレット | エイリアス | 説明 |TechNet|
|:--------------|:----------|:-----|:-----------|
|Get-Command    | gcm   | コマンドの一覧を取得    | [Link](http://technet.microsoft.com/ja-jp/library/hh849711.aspx)|
|Get-History    | ghy, h, history   | コマンド履歴を表示    | [Link](http://technet.microsoft.com/ja-jp/library/hh849691.aspx)|
|Invoke-History | ihy, r          | コマンド履歴から実行   | [Link](http://technet.microsoft.com/ja-jp/library/hh849737.aspx)|
|Invoke-WebRequest | iwr, curl, wget    | Webリクエストを実行する | [Link](http://technet.microsoft.com/en-us/library/hh849901.aspx)|
|Start-Transcript  | なし    | 出力内容のファイル書き出し開始 | [Link](http://technet.microsoft.com/ja-jp/library/hh849687.aspx)|
|Stop-Transcript  | なし    | 出力内容のファイル書き出し停止 | [Link](http://technet.microsoft.com/ja-jp/library/hh849688.aspx)|



#5. おわりに
次回は、オブジェクト操作周りのコマンドレットについて書く予定です。