PATH以下のファイルに対する操作

path-childitemというCmdletを使う。

MSH> get-childitem C:\TEMP\ -Include *.cs -Recurse


   Directory: FileSystem::C:\TEMP\BLL\Properties


Mode    LastWriteTime            Length Name
----    -------------            ------ ----
-a---   8 10 16:37                 1637 AssemblyInfo.cs


   Directory: FileSystem::C:\TEMP\BLL


Mode    LastWriteTime            Length Name
----    -------------            ------ ----
-a---   8 11 10:30                 2044 AContext.cs
-a---   8 11 10:30                 2619 CManager.cs
-a---   8 10 21:54                 3580 Cryptograph.cs
-a---   8 10 14:25                  531 Localization.cs
-a---   8 10 15:47                  487 Logging.cs
-a---   8 10 20:24                  574 Login.cs
-a---   8 10 14:41                  438 PCounter.cs
-a---   8 10 15:47                  916 RManager.cs
-a---   8 10 15:47                  556 SConfiguration.cs
-a---   8 10 14:06                  521 Usage.cs
-a---   8 10 14:34                  394 UInfo.cs
-a---   8 10 14:42                  402 UPreference.cs
-a---   8 10 14:31                  381 Utility.cs


ちょっとこれじゃ使いにくいので、フルパスの文字列を出力するように整形する。

MSH> get-childitem C:\TEMP -Include *.cs -Recurse|foreach{combi
ne-path $_.Directory $_.Name}
C:\TEMP\BLL\Properties\AssemblyInfo.cs
C:\TEMP\BLL\Properties\AssemblyInfo.cs
C:\TEMP\BLL\ApplicationContext.cs
C:\TEMP\BLL\CacheManager.cs
C:\TEMP\BLL\Cryptograph.cs
C:\TEMP\BLL\Localization.cs
C:\TEMP\BLL\Logging.cs
C:\TEMP\BLL\Login.cs
C:\TEMP\BLL\PerformanceCounter.cs
C:\TEMP\BLL\RoleManager.cs
C:\TEMP\BLL\SystemConfiguration.cs
C:\TEMP\BLL\Usage.cs
C:\TEMP\BLL\UserInfo.cs
C:\TEMP\BLL\UserPreference.cs
C:\TEMP\BLL\Utility.cs
MSH>

コマンドの実行結果が、どんなプロパティを持ったオブジェクトなのか見たい、という時は、format-listというCmdletを使うと見やすく整形してくれる。

MSH> $a=get-childitem C:\TEMP -Include *.cs -Recurse
MSH> $a[0]|format-list


   Directory: FileSystem::C:\TEMP\BLL\Properties



Name           : AssemblyInfo.cs
Length         : 1637
CreationTime   : 2005/08/10 11:34:37
LastWriteTime  : 2005/08/10 16:37:08
LastAccessTime : 2005/08/11 10:30:23
VersionInfo    :

で、パイプラインで必要なプロパティだけに間引きたい時には、select-objectを使う。

MSH> get-childitem C:\TEMP -Include *.cs -Recurse|select-object
 Name

Name
----
AssemblyInfo.cs
AContext.cs
CManager.cs
Cryptograph.cs
Localization.cs
Logging.cs
Login.cs
PCounter.cs
RManager.cs
SConfiguration.cs
Usage.cs
UInfo.cs
UPreference.cs
Utility.cs