2010年11月18日星期四

PowerShell概要

PowerShellはWSHの替わりものであります。
WSHの利用できる言語はVBScript,Javascriptですが、もうすでに.net時代なので、この二つのScriptはなかなか古い感じられ、さっさとOS管理用のScriptも昇級しよう。

PowerShellの特徴:
  • 豊富に用意された高機能なコマンド(「コマンドレット」
  • 「.NET Frameworkクラス・ライブラリ」との連携(.net Framework2.0必須)
  • 「ドライバ」経由でさまざまなデータストアへのアクセスが可能
これで、.netに上手な管理者たちは楽になるでしょう。

PowerShell2.0はWINDOW2008R2とWINDOWS7からOSに含まれています。
この前のバージョンのOS(WINXPまで)には使いたければ、先に.netframework2.0のインストールが必要です。それから、PowerShellをOSに対応するバージョンをインストールする。

PowerShellを利用するに当たって、何はおいても、まず「コマンドレット(Cmdlet)」の理解は欠かせない。コマンドレットとは、要は、PowerShellで利用可能なコマンドのことである。
標準で129種類にも及ぶコマンドレットが提供されており、これらコマンドレットを組み合わせることで、従来、コマンド・プロンプトやWSHでは実現できなかった(もしくは困難であった)処理を限りなく短いコードで実現することができる。

まずPowerShellで利用可能なコマンドレットをざっと確認してみることにしよう。利用可能なコマンドレットの一覧を取得するのはGet-Commandコマンドレットの役割だ。Get-Commandコマンドレットを利用することで、名前(Name)、構文(Definition)などを確認することができる。

詳細情報の確認にはGet-Helpコマンドレットを使う。
コマンドレットの末尾に「-?」オプションを付けてもよい
PowerShellでは、主要なコマンドレットに対してエイリアス(別名)を提供します。
例えば、カレント・フォルダ配下の情報を取得するためのGet-ChildItemコマンドレット――これはエイリアスを利用することで、以下のように書き換えることも可能だ。
例:
Set-Alias remove Remove-Item
意味はPowerShell中のファイル削除命令の Remove-Item をremoveに別名つけて、
PowerShell中でCMD中のようにファイル削除命令removeが使えることにした。

Get-Aliasにより現在の別名リスをを表示できます。

基本は命令キーワードにより実行するものですが、一行不足の場合、改行継続は”|”で使う。
例:
PS > Get-ChildItem |
>> Where-Object {$_.LastWriteTime -lt (Get-Date).AddMonths(-6)} |
>> ForEach-Object {$_.Delete()}

Get-ChildItemはCurrentDirectory下のファイルをリストする。|で改行
Where-Objectで最新書き込み時間は6ヶ月以内の条件をつける。
For-Each-ObjectでLOOPして結果を$_.Delete()で削除する。

PowerShellは変数のタイプがあります。


エイリアス .NET Frameworkの型名
byteSystem.Byte
intSystem.Int32
longSystem.Int64
single、floatSystem.Single
doubleSystem.Double
decimalSystem.Decimal
charSystem.Char
boolSystem.Boolean
stringSystem.String
array/td> System.Array
xmlSystem.Xml.XmlDocument
typeSystem.Type

特別なCHARもあります。

エスケープ・シーケンス概要
`bバックスペース
`n改行
`rキャリッジ・リターン
`tタブ

つまり、PowerShellは前と違って、.netFramework baseの高級Scriptである。

==========================================================
WINDOWS2008R2のServerCoreを最小インストールする場合は、
PowerShellと.NetFramework2.0が使えないですが。以下のコマンドで起動できます。
start /w ocsetup NetFx2-ServerCore
start /w ocsetup MicrosoftWindowsPowerShell

PowerShellを起動するには
start C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe
とします。

没有评论: