2016-11-15 39 views
1

我想用文件夾中包含的文件的所有屬性填充csv文件。我有麻煩恢復文件版本&裝配PowerShell列表遞歸地將文件屬性設置爲csv

$arr = @() 
gci C:\Temp -recurse | ? {$_.PSIsContainer -eq $False} | % { 
$obj = New-Object PSObject 
$obj | Add-Member NoteProperty Directory $_.DirectoryName 
$obj | Add-Member NoteProperty Name $_.Name 
$obj | Add-Member NoteProperty Size (Get-Item $_.Length/1MB) 
$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner) 
$obj | Add-Member NoteProperty LastAccess $_.LastAccessTime 
$obj | Add-Member NoteProperty Extension $_.Extension 
$obj | Add-Member NoteProperty Creation $_.CreationTime 
$obj | Add-Member NoteProperty LastWrite $_.LastWriteTime 
$obj | Add-Member NoteProperty ReadOnly $_.IsReadOnly 
$obj | Add-Member NoteProperty FullName $_.FullName 
$obj | Add-Member NoteProperty Date (Get-Date -format "yyyy-MM-d HH:mm") 
$obj | Add-Member NoteProperty Version ($_.FileVersion) 
$obj | Add-Member NoteProperty Assembly ($_.AssemblyVersion) 
$arr += $obj 
} 
$arr | Export-CSV -notypeinformation "c:\temp\File\report.csv" 
+0

那麼最新的錯誤? – 4c74356b41

+0

無,即使文件夾中存在某個版本的dll,字段也是空的。謝謝。 – OwenS

回答

1

1)您面臨的問題是因爲許可。嘗試以提升模式運行腳本(以管理員身份運行)。 2)你不應該試圖在C:\ temp文件夾下保存任何東西。最好在D:\或E:\中創建一個文件夾,並將其放在那裏作爲D:\ temp_dump \ report.csv 3)如果您要將get-item放在大小上,那麼這不是有效的必須選擇文件夾內的任何內容。

下面的腳本工作正常。

########################################################## 

$arr = @() 
$Folder_path="E:\PS" 

gci $Folder_path | ? {$_.PSIsContainer -eq $False} | % { 

$obj = New-Object PSObject 

$obj | Add-Member NoteProperty Directory $_.DirectoryName 

$obj | Add-Member NoteProperty Name $_.Name 

$obj | Add-Member NoteProperty Size (Get-ChildItem $Folder_path | Measure-Object -property length -sum) 

$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner) 

$obj | Add-Member NoteProperty LastAccess $_.LastAccessTime 

$obj | Add-Member NoteProperty Extension $_.Extension 

$obj | Add-Member NoteProperty Creation $_.CreationTime 

$obj | Add-Member NoteProperty LastWrite $_.LastWriteTime 

$obj | Add-Member NoteProperty ReadOnly $_.IsReadOnly 

$obj | Add-Member NoteProperty FullName $_.FullName 

$obj | Add-Member NoteProperty Date (Get-Date -format "yyyy-MM-d HH:mm") 

$obj | Add-Member NoteProperty Version ($_.FileVersion) 

$obj | Add-Member NoteProperty Assembly ($_.AssemblyVersion) 

$arr += $obj 

} 

$arr | Export-CSV -notypeinformation "E:\report.csv" 
0

爲了獲得文件版本,你必須使用:

$obj | Add-Member NoteProperty Version ($_.VersionInfo.FileVersion) 

不能從VERSIONINFO得到的AssemblyVersion

2

試試這個

$arr = @() 
gci C:\Temp -recurse -File -Filter *.dll | % { 
$obj = New-Object PSObject 
$obj | Add-Member NoteProperty Directory $_.DirectoryName 
$obj | Add-Member NoteProperty Name $_.Name 
$obj | Add-Member NoteProperty Size (Get-Item $_.Length/1MB) 
$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner) 
$obj | Add-Member NoteProperty LastAccess $_.LastAccessTime 
$obj | Add-Member NoteProperty Extension $_.Extension 
$obj | Add-Member NoteProperty Creation $_.CreationTime 
$obj | Add-Member NoteProperty LastWrite $_.LastWriteTime 
$obj | Add-Member NoteProperty ReadOnly $_.IsReadOnly 
$obj | Add-Member NoteProperty FullName $_.FullName 
$obj | Add-Member NoteProperty Date (Get-Date -format "yyyy-MM-d HH:mm") 
$obj | Add-Member NoteProperty Version ($_.VersionInfo.FileVersion) 
$obj | Add-Member NoteProperty Assembly ([Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version) 
$arr += $obj 
} 
$arr | Export-CSV -notypeinformation "c:\temp\File\report.csv" 

你可以像這樣簡化你的代碼

gci C:\Temp -recurse -File -Filter *.dll | % { 
New-Object PSObject -Property @{ 
Directory= $_.DirectoryName 
Name= $_.Name 
Size= $_.Length/1MB 
Owner= ((Get-ACL $_.FullName).Owner) 
LastAccess= $_.LastAccessTime 
Extension= $_.Extension 
Creation= $_.CreationTime 
LastWrite= $_.LastWriteTime 
ReadOnly= $_.IsReadOnly 
FullName= $_.FullName 
Date= (Get-Date -format "yyyy-MM-d HH:mm") 
Version= ($_.VersionInfo.FileVersion) 
Assembly= ([Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version) 
} 
} | Export-CSV -notypeinformation "c:\temp\File\report.csv" 
+0

你的答案釘了它... –