WSHの利用できる言語はVBScript,Javascriptですが、もうすでに.net時代なので、この二つのScriptはなかなか古い感じられ、さっさとOS管理用のScriptも昇級しよう。
PowerShellの特徴:
- 豊富に用意された高機能なコマンド(「コマンドレット」)
- 「.NET Frameworkクラス・ライブラリ」との連携(.net Framework2.0必須)
- 「ドライバ」経由でさまざまなデータストアへのアクセスが可能
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の型名 |
byte | System.Byte |
int | System.Int32 |
long | System.Int64 |
single、float | System.Single |
double | System.Double |
decimal | System.Decimal |
char | System.Char |
bool | System.Boolean |
string | System.String |
array/td> | System.Array |
xml | System.Xml.XmlDocument |
type | System.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
とします。
没有评论:
发表评论