Windows PowerShellの勉強その3

その1、その2ではイベントログをcsv形式にエクスポートしてみた。
今回、その3では条件に一致するファイル一覧を取得してみる。

コマンドプロンプトなら最初に思いつくのがdirコマンド。
PowerShellでも、dirはget-childitemのエイリアスに標準で設定されているが、勉強なので出来るだけエイリアスや省略を使わずに使用してみる。


まずはエイリアスの確認。
従来のコマンドユーザのために、dirはget-childitemのエイリアスになっている。
PS C:\> alias dir

CommandType     Name                  Definition
-----------     ----                  ----------
Alias           dir                   Get-ChildItem

UNIXやLinuxユーザのために、lsもget-childitemのエイリアスになっている。
PS C:\> alias ls

CommandType     Name                  Definition
-----------     ----                  ----------
Alias           ls                    Get-ChildItem



何も指定せずにget-childitemを実行すると、カレントディレクトリ直下のフォルダやファイルの一覧が表示される。
PS C:\> get-childitem

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2008/05/18     18:57            Intel
d----        2008/01/21     11:30            PerfLogs
d-r--        2009/09/06     22:30            Program Files
d-r--        2008/05/18      0:34            Users
d----        2009/08/08     23:10            Windows
-a---        2006/09/19      6:43         24 autoexec.bat
-ar-s        2008/05/18     17:13       8192 BOOTSECT.BAK
-a---        2006/09/19      6:43         10 config.sys

モードはファイルの属性で、5桁で構成されている。
このモードの説明は、get-help Get-ChildItem -detailedで表示される。
1. d (ディレクトリ)
2. a (アーカイブ)
3. r (読み取り専用)
4. h (隠しファイル)
5. s (システム ファイル)



自分のユーザプロファイルのフォルダおよびその配下のサブフォルダから、拡張子が.pngのファイルの一覧を取得してみる。
-recurseは再帰的、この場合はすべてのサブフォルダを含める意味。
サブフォルダごとに分かれて表示されるのは、コマンドプロンプトでdirを/s付きで実行したときみたいだね。
PS C:\> $userprofile = $env:userprofile
PS C:\> echo $userprofile
C:\Users\norimaki
PS C:\> get-childitem -recurse -path $userprofile -include *.png

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Downloads\TF_syoubu_icon\勝負アイコン\icon_png

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2009/05/01     22:38       6629 ball.png
-a---        2009/05/01     22:38       9223 bat.png
-a---        2009/05/01     22:38      11677 globe.png
-a---        2009/05/01     22:38       9808 helmet.png
-a---        2009/05/01     22:38       8592 logo.png

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Pictures

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2008/05/18     22:13       9312 corega01.png
-a---        2008/05/18     22:14       9416 corega02.png
-a---        2008/05/18     22:16      12624 corega03a.png
-a---        2008/05/18     22:47      19567 corega03b.png
-a---        2008/05/18     22:46      49251 corega04.png
-a---        2009/05/31     22:18      70911 無題.png



ここでファイルの属性の項目を確認しよう。
その1のときと同様に、抽出したファイルの情報をformat-listコマンドレットにパイプで送る。
PS C:\> $userprofile = $env:userprofile
PS C:\> get-childitem -recurse -path $userprofile -include logo.png |format-list

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Downloads\TF_syoubu_icon\勝負アイコン\icon_png

Name           : logo.png
Length         : 8592
CreationTime   : 2009/04/23 17:36:04
LastWriteTime  : 2009/05/01 22:38:52
LastAccessTime : 2009/04/23 17:36:04
VersionInfo    :

CreationTimeはファイルの作成日時
LastWriteTimeはファイルの更新日時
LastAccessTimeはファイルの最終アクセス日時

おお、これはいいね。
ファイルの更新日だけではなく、アクセス日でファイルを抽出したり出来そうだ。
ファイルサーバ内では更新されなくても読み取りされているファイルもあり、「最近使っていないファイルを抽出」が簡単に出来そうな気配がするね。



では自分のユーザプロファイルのおよびその配下のサブフォルダから、ファイル名が「写真」で始まり、拡張子が.lzhのファイルの詳細情報を取得してみる。
PS C:\> $userprofile = $env:userprofile
PS C:\> get-childitem -recurse -path $userprofile -include 写真*.lzh |format-list

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Documents\受信したファイル

Name           : 写真20090809.lzh
Length         : 6703041
CreationTime   : 2009/08/09 23:14:21
LastWriteTime  : 2009/08/09 23:16:32
LastAccessTime : 2009/08/09 23:14:21
VersionInfo    :

Name           : 写真20090816.lzh
Length         : 1587869
CreationTime   : 2009/08/16 21:22:24
LastWriteTime  : 2009/08/16 21:22:57
LastAccessTime : 2009/08/16 21:22:24
VersionInfo    :



そうしたら同じフォルダから、最終アクセス日時が2009/08/09 23:15:00よりも古いファイルを抽出。
更新日時ではなく、最終アクセス日時で抽出されたことがわかる。
PS C:\> $userprofile = $env:userprofile
PS C:\> get-childitem -recurse -path $userprofile -include 写真*.lzh |Where-Object {$_.LastAccessTime -lt "2009/08/15 23:15:00"} |format-list

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Documents\受信したファイル

Name           : 写真20090809.lzh
Length         : 6703041
CreationTime   : 2009/08/09 23:14:21
LastWriteTime  : 2009/08/09 23:16:32
LastAccessTime : 2009/08/09 23:14:21
VersionInfo    :



今度は最終アクセス日時が2009/08/15 23:15:00と同じか、それより新しいファイル。
PS C:\> $userprofile = $env:userprofile
PS C:\> get-childitem -recurse -path $userprofile -include 写真*.lzh |Where-Object {$_.LastAccessTime -ge "2009/08/15 23:15:00"} |format-list

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Documents\受信したファイル

Name           : 写真20090816.lzh
Length         : 1587869
CreationTime   : 2009/08/16 21:22:24
LastWriteTime  : 2009/08/16 21:22:57
LastAccessTime : 2009/08/16 21:22:24
VersionInfo    :



ユーザプロファイル以下で、拡張子が.zip、ファイルサイズが2MBよりも小さく、最終アクセス日時が2009年6月1日と同じかそれよりも新しい。
PS C:\> $userprofile = $env:userprofile
PS C:\> get-childitem -recurse -path $userprofile -include *.zip |Where-Object {$_.Length -lt 2097152} |Where-Object {$_.LastAccessTime -ge "2009/06/01"} |format-list

    ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\norimaki\Downloads

Name           : Hyper-V_Security_Guide_pdf.zip
Length         : 1871904
CreationTime   : 2009/07/06 2:41:05
LastWriteTime  : 2009/07/06 2:41:08
LastAccessTime : 2009/07/06 2:40:31
VersionInfo    :



条件はさっきと同じで、抽出結果を%temp%の下にcsv形式ファイルでエクスポートする。
PS C:\> $userprofile = $env:userprofile
PS C:\> get-childitem -recurse -path $userprofile -include *.zip |Where-Object {$_.Length -lt 2097152} |Where-Object {$_.LastAccessTime -ge "2009/06/01"} |export-csv -encoding default -path $temp\File-List.csv

エクスポートされたcsvファイルを見てみるとわかるが、format-listコマンドレットにパイプするよりも、もっと多くの属性が含まれているね。




今日はこれくらいにしておこう。

Oracle Database 11g R2の発表

データベース管理システムのもっともメジャーな製品、Oracle Databaseの最新版が発表されました。


http://japan.zdnet.com/news/db/story/0,2000056180,20399381,00.htm
・オラクル、「Oracle Database 11g Release 2」をリリース - データベース/データ管理 - ZDNet Japan
http://www.computerworld.jp/topics/db/160669.html
・オラクル、RDBMS新版「Oracle Database 11g R2」をリリース : データベース - Computerworld.jp



Oracle Database 11gは日本では2007年10月に出荷が開始されている。
それから約2年で新しいバージョンの発表。
Windows Serverもそうだが、4年ごとにメジャーバージョンアップ、その中間の2年ごとにR2としてマイナーバージョンアップが主流になってきた。

OSとかDBのようなシステムの基盤となる製品は、経験上やはり4年から5年程度はメジャーバージョンアップしないで、現行製品として利用したいと考えるユーザが多い。
しかし技術の進歩は止まらないので、その中間でマイナーバージョンアップをリリース。
製品をリリースする側と利用する側の思いのバランスが取れている期間なのかな。

新システムの提案や開発開始時点で、利用する様々な製品のライフサイクルを念頭に入れて検討することはとても重要です。

テスト中

全ての記事を表示する

ブロとも申請フォーム

ブログ検索
プロフィール

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:ネイビー犯罪捜査班、ザ・プラクティス、ボストン・リーガル



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


最近の記事
最近のコメント
カレンダー
08 | 2009/09 | 10
- - 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 - - -
カテゴリー
FC2カウンター
キーワード

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

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