Windows PowerShellの勉強その1

いまさらですが、Windows PowerShellの勉強を始めました。

Windows Vistaまでは、マイクロソフトからダウンロードしてインストールする必要があった。
Windows Server 2008では標準でOSに含まれているが、機能の追加を行う必要がある。
しかしついに、Windows Server 2008 R2からはPowerShellが標準で有効化されている上に、無効化することが出来なかったはず。
いよいよPowerShellが標準のコマンド実行環境になる日も近い。

と言うわけで、いまさらですが勉強を開始しました。


まずは定番、コマンド一覧。
PS C:\> get-command



イベントログを取得するコマンドレットの詳細を表示。
PS C:\> get-help Get-EventLog -detailed



対象のイベントログの種類の詳細
PS C:\> get-eventlog -list

  Max(K) Retain OverflowAction        Entries Name
  ------ ------ --------------        ------- ----
  20,480      0 OverwriteAsNeeded       5,520 アプリケーション
  15,168      0 OverwriteAsNeeded           0 DFS レプリケーション
  20,480      0 OverwriteAsNeeded           0 ハードウェア イベント
     512      7 OverwriteOlder              0 Internet Explorer
  20,480      0 OverwriteAsNeeded           0 Key Management Service
   8,192      0 OverwriteAsNeeded           0 Media Center

  20,480      0 OverwriteAsNeeded      39,791 システム
  15,360      0 OverwriteAsNeeded         116 Windows PowerShell

PS C:\>


イベントログ取得するときに指定するイベントログの名称一覧
PS C:\> get-eventlog -list -asString
Application
DFS Replication
HardwareEvents
Internet Explorer
Key Management Service
Media Center
Security
System
Windows PowerShell
PS C:\>


環境変数の%userprofile%を、PowerShellの変数$UserProfileに代入。
PowerShellで直接%userprofile%などの環境変数は扱えないみたい。
PS C:\> $UserProfile = $env:UserProfile
PS C:\>

echoで変数の値が表示されるのはPowerShellでも同じ。
PS C:\> echo $UserProfile
C:\Users\norimaki2000
PS C:\>


システムのイベントログの最新の50行を、カンマ区切りでマイドキュメントのEventSys50Lines.csvにエクスポート。
まず-newest 50で最新の50行を取得し、それをパイプでexport-csvコマンドレットに渡してCSV形式にしている。
PS C:\> $UserProfile = $env:UserProfile
PS C:\> get-eventlog -logname system -newest 50 |export-csv -encoding default -path $userprofile\Documents\EventSys50Lines.csv
PS C:\>

ここで-encoding defaultを指定しないと、PowerShell標準のASCIIコードでエンコードされるため、日本語が文字化けしてしまう。
-encoding defaultを指定すると、システムのデフォルトであるシフトJISでエンコードされるため、日本語が文字化けしなくなる。
何のデフォルトなのか少しややこしい。


これがシステムのデフォルトのエンコードを調べるコマンド。
確かにシフトJISになっている。
PS C:\> [System.Text.Encoding]::Default

BodyName          : iso-2022-jp
EncodingName      : 日本語 (シフト JIS)
HeaderName        : iso-2022-jp
WebName           : shift_jis
WindowsCodePage   : 932
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.InternalEncoderBestFitFallback
DecoderFallback   : System.Text.InternalDecoderBestFitFallback
IsReadOnly        : True
CodePage          : 932

PS C:\>


今度は2009年8月16日の分だけのシステムイベントログを抽出し、カンマ区切りCSV形式でマイドキュメントのEventSys20090816.csvにエクスポート。
PS C:\> $UserProfile = $env:UserProfile
PS C:\> get-eventlog -logname system | Where-Object { $_.TimeGenerated -like "2009/08/16*"}|export-csv -encoding default -path $userprofile\Documents\EventSys20090816.csv
PS C:\>

PowerShellで操作できる値は単なる文字列ではなく「オブジェクト」として、項目に対する値として保持されている。
上記ではWhere-Objectコマンドレットを使って、$_.TimeGeneratedの値が2009年8月16日のイベントだけを抽出している。
$_.TimeGeneratedはそのイベントが生成された日時。


どのような項目があるのかは、イベントログをformat-listにパイプで送ってみたらわかる。
PS C:\> Get-EventLog -logname system -newest 1 |format-list

Index              : 39789
EntryType          : Information
EventID            : 4201
Message            : ネットワーク アダプタ Wireless Network Connection が ネットワークに
                   接続されており、通常の運用が開始されたことを、システムが検出しました。
Category           : (0)
CategoryNumber     : 0
ReplacementStrings : {, Wireless Network Connection}
Source             : Tcpip
TimeGenerated      : 2009/08/16 21:02:54
TimeWritten        : 2009/08/16 21:02:54

PS C:\>

TimeGeneratedは時刻だけではなく、日付時刻型であることがわかる。
文字列ではなくオブジェクトだから、2009/08/16か2009/8/16なのかは悩む必要がない。


これは2009年8月12日の0:00:00以降のイベントログを取得するコマンド。
PS C:\> $UserProfile = $env:UserProfile
PS C:\> get-eventlog -logname system | Where-Object { $_.TimeGenerated -ge "2009/08/12 00:00:00"}|export-csv -encoding default -path $userprofile\Documents\EventSys20090812ge.csv
PS C:\>


これは2009年8月12日の0:00:00から8月13日23:59のイベントログを取得するコマンド。
日時の開始と終了をandか何かでつなぐ事が出来ると思うんだけど、残念ながらよくわからなかったので、8月12日0:00以上を抽出して次の8月13日23:59以下の絞込みにつなげてみた。
PS C:\> $UserProfile = $env:UserProfile
PS C:\> get-eventlog -logname system | Where-Object { $_.TimeGenerated -ge "2009/08/12 00:00:00"}| Where-Object { $_.TieGenerated -lt "2009/08/13 23:59:59"}|export-csv -encoding default -path $userprofile\Documents\EventSys20090812-0813.csv
PS C:\>


これは24時間以内のイベントログを抽出するコマンド。
get-dateで現在の日時が取得できる。
それに対して.addhours(-24)で過去24時間分を指定している。
PS C:\> $UserProfile = $env:UserProfile
PS C:\> Get-EventLog -logname system | Where-Object { $_.TimeGenerated -gt (get-date).addhours(-24) } |export-csv -encoding default -path $userprofile\Documents\EventSys24Hours.csv
PS C:\>


これは3日以内のイベントログを抽出するコマンド。
get-dateに対して.adddays(-3)で過去3日分を指定している。
PS C:\> $UserProfile = $env:UserProfile
PS C:\> Get-EventLog -logname system | Where-Object { $_.TimeGenerated -gt (get-date).adddays(-3) } |export-csv -encoding default -path $userprofile\Documents\EventSys3days.csv
PS C:\>


うーん、疲れた。

既にわかっていたことだけどPowerShellはコマンドの域ははるかに超えて、言語です。
俺は嫌なんだよなあ。
大昔にプログラムを作るのをやめてからと言うものの、言語らしいものに拒否感があるんだよなあ。
関連記事

コメントの投稿

非公開コメント

永遠のPowerShell初心者です

せいさん、お返事が遅くなりました。
お仕事はちょっと違うようですが、パソコンはかなり使われているようですね。
今までバッチファイルで苦労して作りこんでいたスクリプトも、PowerShellではスマートに作成できたりします。
とは言うものの新しくいろいろ覚えなければならないので、私も少しずつやっています。

私もおいまさらながら

私もいまさらながらPowershellの勉強を始めてしまいました^^;

記事を参考にさせて頂きます!

テスト中

全ての記事を表示する

ブロとも申請フォーム

ブログ検索
プロフィール

norimaki2000

norimaki2000のブログにようこそ
・2013/01/05テンプレートをsantaからhouseに変更
・2012/10/29テンプレートをsweet_donutsからsantaに変更
Follow norimaki2000 on Twitter気軽に話しかけてね

ニューヨーク・マンハッタン(タイムズスクェア)180×135

千葉県在住で東京都内に勤務。SE歴20年超えました。

昔々はオフコンで販売管理などのアプリケーション開発していた。
ファミリーレストランの無線オーダリングやPOS、キッチンプリンタの全国展開なんかもやっていました。
最近はWindowsサーバーとVMware vSphereを中心としたサーバーインフラの提案・構築・保守を中心にやってます。
主な取り扱い製品は、
・Windows 2000 Server以降 (もちろんNT3.5やNT4.0も知っていますが)
・Active Directory (今で言うAD DS)
・Symantec Backup Exec
・Symantec System Recovery
・CA ARCserve Backup for Windows
・CA ARCserve Replication
・CA ARCserve D2D
・EMC RepliStor
・VMware vSphere
・某メーカーのクラスタソフトウェア

どれもこれも中途半端な知識と技術力ですが、なんとかやっています。
私自身は技術や製品を担当する立場ではなく、特定業種のお客さん(ユーザ企業)の対応窓口となるSEの役割りですから、必要であれば詳しい知識や経験豊富な別のSEを探してきてプロジェクトメンバに加えます。

もちろん小さな物件では自分で提案、インストール、お客さんへの導入、アフターサポートまでやります。
大きな物件では提案はやりますが、構築部分は専門部隊に依頼します。
その場合でもアフターサポート窓口は私がやりますので、お客さんに対しては一貫して窓口SEとなります。

サーバの世界の大きなトレンドは統合・仮想化。
2007年はVirtual Server 2005 R2によるサーバ仮想化も、2つのお客さんで本稼動させた。
2008年はVMware ESX 3.5を2セット構築。単純なローカル起動と、SANブート/VMotion/DRS/HA/VCBのフル装備もやった。
2009年はぜひHyper-Vの仮想環境を構築したいな。と思っていたが、なかなか機会に恵まれなかった。
2010年はVMware ESX 4.0でHA/VMotion/VCBバックアップを進行中。

そのほかにも、ドメインコントローラやファイルサーバの全国展開とデータ移行、特定のアプリケーションの実行基盤となるサーバ群のOS・バックアップ・DBクラスタなどインフラ部分の構築などをやっています。


2011年のポイントも引き続き、【ご利用は計画的に】。
今まで長年に渡って仕事も私生活も行き当たりばったりなので、少しでも物事を計画的に進められるようにしたい。
いつも計画性の無さが災いして多くの人に迷惑をかけています。
自分自身も計画的な仕事ができないため、いつもいろいろ苦労しています。
今年はさらに計画的に仕事をするようにしなきゃ。

それと若手を上手に使うようにならなきゃならん。
若手の育成はもちろんだけど、僕自身も仕事を上手に他の人に振ることができるようになりたい。
仕事の種類のせいなのか性格なのか、どうしても一人で抱え込んでしまうから。

【Twitter】2010年の元旦から始めました。平均して1日あたり10ツィート程度です。
仕事関連の呟きが少し、くだらない呟きがほとんどかな。
Follow norimaki2000 on Twitter
・norimaki2000 on Twitter

Follow norimaki2000 on Twitter
・norimaki2000 on Twilog


オンライン上ではあるけれど、今まで知らなかった人たちと交流する機会を得ることになり、非常に刺激を受けます。
仕事でも私生活でも、いろんな人のつぶやきは息抜きにもなり、また助けられたり、あるいは「もっとがんばんなきゃ」と励みになったりします。
Twitterを考え出した人の発想、システムとして作り上げた努力と情熱はすごい!!


【好きな音楽】ベテランの皆さんなら浜田省吾、尾崎豊、エコーズ、若手なら鬼束ちひろ、平原綾香、現在注目の若手はいきものがかり

【好きなアイドル】千葉県柏市を中心に活動する地元アイドルの「コズミック☆倶楽部」を激推し中です。

【好きな飲み物】シャンパンはご存知モエ・エ・シャンドン ブリュット アンペリアル、ビールはキリン ブラウマイスター、水ならビッテル、お茶ならキリン生茶

【好きなTVドラマ】Xファイル、24、ミレニアム、ER、CSI:科学捜査班シリーズ、NCIS:ネイビー犯罪捜査班、ザ・プラクティス、ボストン・リーガル



パソコン困り事相談もよろしく


最近の記事
最近のコメント
カレンダー
12 | 2020/01 | 02
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
カテゴリー
FC2カウンター
キーワード

Windows_Server VMware_ESX VMware vCenter_Server PowerShell VMware_Player PowerCLI vSphere_Client VirtualCenter Active_Directory vStorage_API Converter 文音 コズミック☆倶楽部 Windows Hyper-V Microsoft_Security_Essentials あいひょん なるみん Windows_8 Backup_Exec VMware_Converter vSphere sora カラオケ 麗美 VCB System_Center Windows_Server_2012 Red_Hat_Enterprise_Linux SQL_Server VMware_vSphere Tech_Fielders System_Recovery メモリダンプ RHEL Internet_Explorer ARCserve_Backup ESX remi Directory Twitter Active Exec マークス Backup Oracle vSphere_CLI ジン子 Firefox vMotion Server Symantec VMware_HA DMC-FZ1000 イチトキ SE Emily_Styler Recovery Office NTFS System  XenServer schtasks DRS キリン Vista 路上ライブ 氷結 sonoka エミリースタイラー コズミック倶楽部 Visual_Studio Sysinternals vCenter_Converter 若手 wevtutil Windows_Update Oracle_Database カルディ ATAPI おやつカンパニー ベビースター スパークリングウォーター 糖質 Brio カーナビ 東京国際フォーラム 0x0000007B サクセス ついにステップワゴンを契約してしまった ハワイ corega おとなのおつまみ グレープフルーツ ロッキー スタローン 圧縮 バルボア エイドリアン 破損 2008 オレッツァ コマンドライン ポケモン・スタンプラリー えびしお 伊藤園 修復 経済産業省 北野 スパリゾートハワイアンズ セキュリティ 白石美帆 神戸 サッポロ グランダム ワイヤーアクション 掃除 雨どい CAB セルシオ 洗車  洗濯 カーポート 高原 夏休み 鬼押し出し園 草津 万座温泉 関西空港 シャンプー台のむこうに デュポン バーベキュー 羽田 ムエタイ サーバ お茶のチューハイ 献血 けんけつちゃん はばたき福祉事業団 キャンプ スリムス 一番搾り食物繊維 ラガー ブラックホーク・ダウン 日本赤十字社 写真 のどごし生 フィット マッハ ジョシュ・ハートネット 映画 東京タワー ウォーター 人口甘味料 コロン Word HUAWEI OneDrive 浜田省吾 Linux GR5 れみ wbadmin Windows_Serverバックアップ Paper.li VMware_ESXi IP38X/N500 バッチ Tween OpenOffice Apache iStorage Windows_Azure NVR500 AWS robocopy Intel Panasonic 佐藤航 Wataru_Sato シンガーソングライター REAN cana canaguitar ツイート 動画 チャンカナ つりあやめ -ayane- vSphere_Web_Client FZ1000 LUMIX Windows_Server_2016 コズミック☆LOVE こずくら 加藤成実 エミリー・スタイラー グループポリシー SkyDrive PC-Success OREZZA NetBackup NR-7900A PCI Replication STOPエラー SAP Resource Kit IZZE CR-V CG CDRW-AB24JL CoolMax DVD IDE Hyperion Gathers SUPPLEX SweetGrass VMFS OpenOffice.org ジャンプフェスタ ITIL ARCserve_Replication ARCserve_D2D vStorag_API Virtual_Infrastructure バックアップ DSP OEM USB Tools Thunderbird USB2.0 Uptime.exe ULPC XP ちばかわいいくらぶ CD 

月別アーカイブ
リンク
RSSフィード