2014-12-25 7 views
2

디스크에서 데이터 사용량에 대한 보고서를 만듭니다. 이름, 경로, 크기 등의 선택된 모든 속성에서 정보를 가져옵니다. 대신 하나의 파일 형식으로,이 속성은 비어 있습니다. 예를 들어, Windows 탐색기에서 파일을 선택하고 일반 탭에서 속성을 선택하면 "파일 형식"이 표시됩니다. 여기서 Excel 파일의 경우 파일 형식은 "Microsoft Excel 워크 시트 (.xlsx)"입니다.파일 확장명에 대한 파일 형식 설명 가져 오기

gci c:\file | select * 

이 정보는 어떻게 얻을 수 있습니까?

+0

. 일반 개발 언어에서는 해당 정보를 검색하는 [SHGetFileInfo] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb762179(v=vs.85) .aspx) 셸 함수를 사용합니다. 하지만 나는 나에게 생명의 힘을 불어 넣을 수는 없다. 좋은 시작은 [이] (http://stackoverflow.com/questions/22871595/clear-recycle-bin-programmatically-with-powershell) 질문 –

답변

4

나는 할 수있을 때 외부 프로그램을 피하고 싶다. 그래서 나는 레지스트리를 사용하여 제안 할 것이다. 난 그냥 프로 데에 즉석에서 한

$app = New-Object -COM 'Shell.Application' 

$f = Get-Item 'C:\path\to\your\file' 
$dir = $app.NameSpace($f.Directory.FullName) 

$description = $dir.GetDetailsOf($dir.ParseName($f.Name), 2) 
+0

큰 감사합니다 이것은 정확하게 내가 원한 것입니다 !!! – kekimian

4

$ext에는 파일의 확장자가 있습니다.

$ext = ".bmp" 

다음 코드는 당신에게 설명을 얻을 것이다, 등록 된 경우 (당신이 당신의 시나리오에 대한 적절한 경우 처리하는 더 나은 오류를 추가해야합니다) - -

$desc = (cmd /c assoc $ext).Split("=")[1] 
$desc = (cmd /c assoc $desc).Split("=")[1] 

Write-Host $desc 

AFAIK를, PowerShell을하지 않습니다 예를 들어

이 정보를 얻을 수있는 메커니즘이 내장되어 있으므로 powershell의 cmd를 사용하는 것이 가장 저렴하고 쉬운 솔루션입니다.

+0

assoc - 지금 기억을 되 찾을 것입니다! 좋은 것. –

+0

답장을 보내 주셔서 감사합니다. 또한 흥미로운 솔루션입니다. – kekimian

1

당신은 Shell.Application 개체의 GetDetailsOf() 방법을 사용할 수 있습니다

$ext = ".xlsx" 
$desc = (Get-ItemProperty "Registry::HKEY_Classes_root\$((Get-ItemProperty "Registry::HKEY_Classes_root\$ext")."(default)")")."(default)" 
$desc 

Microsoft Excel-regneark #Norwegian description 

이 같이 수정할 수 Select-Object와 함께 사용하려면 F의 솔루션은 독창적 인 항목이있는 정렬 된 목록을 추가하여 읽기 쉽도록했습니다. 정보가 파일에없는하지만 쉘에 의해 제공되는 것을

$extensiondesc = @{n="ExtensionDescription"; 
e={(Get-ItemProperty "Registry::HKEY_Classes_root\$((Get-ItemProperty "Registry::HKEY_Classes_root\$($_.Extension)")."(default)")")."(default)" }} 
Get-ChildItem | 
Select-Object -unique Extension, $extensiondesc |Sort-Object @{e="Extension";Ascending=$true},@{e="ExtensionDescription";Ascending=$false} 
0

:

#You could define this inside Select-Object too, but it's a bit long so I extracted it first to clean up the code. 
$extensiondesc = @{n="ExtensionDescription";e={ (Get-ItemProperty "Registry::HKEY_Classes_root\$((Get-ItemProperty "Registry::HKEY_Classes_root\$($_.Extension)")."(default)")")."(default)" }} 

Get-ChildItem | 
Select-Object Extension, $extensiondesc 

Extension ExtensionDescription 
--------- -------------------- 
.oxps  XPS Document 
.lnk  Shortcut 
.txt  Text Document