2016-11-15 40 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

你的答案钉了它... –