天地有情

PowerShell ツマミある記 TOP20

PowerShell ツマミある記 TOP20
最近の Windows には新しいコマンドシェルとして UNIX のシェルに匹敵する PowerShell が標準搭載されています.

PowerShellは,高機能なコマンドライン操作体系と本格的なプログラミングに耐えられる言語体系を両立し,
コマンドライン操作とスクリプトに対して同じ環境を提供します.

この記事では特徴的な20項目を順不同で列挙します.

 1: PowerShellは次の2つの機能を提供します.
 
  ● 対話式シェルによるオペレーション
  ● シェルスクリプトの実行(スクリプト言語)
 
  PoweShellでは,シェルスクリプトは[.ps1ファイル]として記述して実行しますが,
  その内容は対話式シェルで直接入力しても実行できるし,対話式シェルで実行する一連のコマンドを
  1つのシェルスクリプトとして記述し,1つのコマンドとして実行することもできる.

 2: 実行する命令をコマンドでなく,コマンドレッドと呼びます.

  約130種以上の cmdlet が用意され,命名規則があり[動詞ー名詞(目的語)]の形式となっている.
  cmdlet の先頭文字は大文字,エイリアス名は小文字とするのが PowerShell のルールのようであるが,
  実行にあたっては大文字,小文字は区別されない.

  ・Get-Command で一覧が取得できる.
 
  cmdlet の一部を挙げる(エイリアスについては 4項 を参照)

ps01

 3: 大文字,小文字は区別されません.

  前述したとおり cmdlet の実行に際しては大文字,小文字は区別されない.
 
 4: Alias機能があります.

  PowerShell の cmdlet は[動詞ー名詞(目的語)]の一貫性のある命名規則に沿っていることから
  直感てきに理解しやすく,覚えやすくなっているのが特徴であるが,次のような難点もある.

  ● 名前が冗長であるため(後述のTAB補完機能を利用が可能)タイピングが面倒
  ● コマンドプロンプトに馴れてきたユーザにとっては新規にコマンドを覚える必要がある

  しかし心配することはない. PowerShell では,主要な cmdlet に対してエイリアス(別名)
  提供している.

  ・PS> Get-Alias でエイリアスの一覧が取得できる.

  ・自分で登録するには,
  PS> Set-Alias r Remove-Item のように記述する.

  ・エイリアスの削除は,
  PS> Remove-Item Alias:r

 5: パス区切りとオプション記号

  ファイルのパス区切りは /(スラシュ)である.ただし,従来からの \(逆スラシュ)もつかえる.
  なお,オプション指定は -(マイナス)である.

 6: 入出力リダイレクト機能があります.
(標準入力,標準出力,標準エラー)


  通常の入出力は標準入力(キーボード),標準出力および標準エラー(CRTディスプレイ)が使われますが
  リダイレクトは標準入力出力先を変更する操作で[>]や[<]の記号が使われる.

  ・PS> cat *.txt > sample.txt (> リダイレクト)
  ・PS> cat *.txt >> sample.txt (>> 追加リダイレクト)
  ・PS> command 2> error.log (2と>の間はスペースをあけてはなりません)

 7: パイプ機能があります.

  システムには,2つのコマンドを一緒に効率よく連結する機能がある.
  この連結はパイプ(pipe)機能と呼ばれ,あるコマンドの出力を受け取り,直接に別のコマンドへ入力として
  与えることを可能にします.

  パイプ機能は2つのコマンド間に文字 [](縦棒) を挿入することで設定されます.
  ・PS> Get-ChildItem | Format-List *

 8: ヒストリ機能があります.(コマンドの再実行)

  ヒストリの表示は Get-History(Alias: h,history,ghy)コマンドを使います.
  このコマンドは,最後に実行された 32 個のコマンドを取得します.

  既定では,各コマンドと ID が表示されます.ID は実行された順番を示します.
  また,履歴からコマンドを実行するにはInvoke-History(Alias: r,ihy)コマンドを使います.

  Clear-History(Alias:clhy)コマンドは履歴からエントリを削除します.

  ビジュアル操作は次の通りです.
 
  ・ ↑キー 後方表示(一つ前の行)
  ・ ↓キー 前方表示(一つ次の行)
  ・ F7キー ヒストリ ウインドウで選択実行
  ・ F8キー 一つ以上の文字を入力してF8を押すと該当検索可
  ・ F9キー ヒストリIDを入力して実行

 9: コマンドラインの入力には補完機能があります.

  入力途中のコマンド名を補完する[タブ補完機能]が用意されている.

  入力途中で[Tab]キーを押すと,押すたびに正しい候補が表示され,[Enter]キーを押すと
  確定させることができる.
 
10: コマンドラインでの計算機能があります.(電卓代用)

  コマンドラインに[20*5+10/3]などのように数式を入力すると,演算の優先順位を正しく評価する.

  さらに,次のように入力すると算術関数が使える.
  【 [math]::算術関数名

  例えば,10の平方根は [math]::sqrt(10) で計算できる.
 
  算術関数名を挙げておきます.
  定数:
        E , PI
  三角関数:
        Sin , Asin , Sinh
        Cos , Acos , Cosh
        Tan , Atan , Tanh
  数式処理:
        Max/Min , Celing/Floor , Round , Sqrt , Pow ,Exp
  対数  :
        Log , Log10
 
11: ヒア・ドキュメント機能があります.
(記号 @" <改行> ~ <改行> "@)


  例
  PS> @"
  >> Hello
  >> World
  >> Bye
  >> "@
  (>> は2次プロンプトを示す)
 
12: コメントは[#]記号で表します.

  ● シングルラインコメント(#)
  行の先頭に#が有ると,その行は行末までコメントとなる.
  また,行の途中に#があると,それ以降は行末までコメントとなる.
 
  ● マルチラインコメント(<# ~ #>)
  <#
  複数行に渡る
  コメントです
  #>
 
13: プロフィル機能があります.(profile.ps1)

  ● システムプロフィル
    C:\Windows\System32\WindowsPowerShell\v1.0\Examples\profile.ps1
    コマンドラインで $profile で確認できる
    (主に,エイリアス名が登録されている)
 
  ● ユーザプロフィル
    C:\Users\hayato\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    (ユーザ関数やエイリアス名などが登録できる)
 
14: 数値,文字列,などはオブジェクトとして扱われます.

  UNIXシェルやWindowsのコマンド・プロンプトで実行されるコマンドの多くは,その実行結果を
  テキストデータとして返す.これに対して PowerShell ではコマンド(cmdlet)の実行結果は
  すべてオブジェクトである.これはメソッドやプロパティをもったオブジェクトである.
 
15: 制御文が用意されています.

  ● if ~ elseif ~ else
     if(条件){....}
     
     if(条件){....}
     else{....}
     
     if(条件){....}
     elseif(条件){....}
     
  ● while(条件){....}
 
  ● do{....}while(条件)
 
  ● for(初期値式 ; 終了条件 ; 増分式){....}
 
  ● foreach(一時変数 in 配列){....}
 
  ● switch(選択変数){
     1 {....}
     2 {....}
     3 {....}
     default {....}
   }
 
16: 関数(function)が定義できます.

  ● function 関数名[([引数[=デフォルト値])] {
    関数本体の定義
    [return 戻り値]
    }
 
  ● 関数の呼び出し方
     関数名 引数1 引数2 ... (スペースで区切る)
 
17: 実行のシミュレーション機能あります.( -WhatIf)

  ワイルドカードでファイル名を指定して削除を実行する場合 -WhatIf オプションを付加すると
  シミュレーション実行してくれる.安全の確認がとる.

  -WhatIf を外せば削除されます.

  例: PS> rm *.png *.bmp -WhatIF
 
18: 実行の確認メッセージの表示機能.(-Confirm)

  rm *.tmp *.bak 削除しても特にメッセージは表示されない.確認メッセージを表示させるには
  -Confirm オプションを付加する.

  例: PS> rm *.png *.bmp -Confirm
 
19: プロバイダ(ドライブのイメージ)とは

  PowerShell は操作対象の世界を意味するプロバイダという新しい概念があります.
  今まで操作の対象がファイルやディレクトリだったのは,ファイルシステムが既定のプロバイダ
  だったからです.

  プロバイダを切り替えることによって,同じ cmdlet でファイルやディレクトリだけでなく,
  レジストリや環境変数なども操作できます.プロバイダは従来のファイルシステムのドライブ
  と似た感覚で使用できます.
 
  プロバイダを一覧するには Get-PSProvider のようにします.
 
ps04
 
20: スクリプトファイル の実行

  デフォルトの実行ポリシーではスクリプトの実行は不許可であるため,以下のようにポリシーを変更しておく.
  一般的には RemoteSigned にするとよいでしょう.
 
  (RemoteSignedはローカルにあるスクリプトファイルは無条件で実行可,リモートにある
  スクリプトファイルは署名付きのもののみ実行可)
 
  ● 実行ポリシーを設定する
  PS> Set-ExecutionPolicy RemoteSigned (通常は RemoteSigned を指定)
    (アイコン→プロパティ→「管理者として実行」に設定要)
   
   ※ 設定内容はレジストリに書き込まれるので操作は初回のみでよい.

  ● 実行ポリシーを確認する
  PS> Get-ExecutionPolicy
 
ps02

 スクリプト/コマンドを実行するにはコマンドラインで次のようにする.

 ■コマンドを実行する[()内はAlias名]
 PS> Get-ChildItem(ls) C:\

 ■ファイルを実行する
 PS> ./script[.ps1 ] #.ps1 は省略可.

 ※ <実行に関する注意>
  (1) PowerShellはカレント・フォルダを検索しない
  (2) スクリプト[実行ポリシー]が設定してあること

スポンサーサイト
  1. 2013/06/09(日) 10:57:43|
  2. PowerShell
  3. | トラックバック:0
  4. | コメント:0
<<PowerShell の関数定義 | ホーム | [LaTeX] qpdf --- PDFのパスワードの設定と解除>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://konoyonohana.blog.fc2.com/tb.php/29-6f034614
この記事にトラックバックする(FC2ブログユーザー)