Wednesday, April 27, 2011

PowerShell code for looking up document properties

If you want to use the SPWeb.Files.Add() method that allows you to pass in a HashTable of metadata for the document, you will need to use the internal name of the metadata field, not the display name.   Here's a PowerShell script to get that for you quickly:


$web = Get-SPWeb http://intranet.sharepointdev.com
$list = $web.Lists["Shared Documents"]
foreach($item in $list.Items)
{
    $file = $item.File
    #output all the SPFile property names
    foreach($key in $file.Properties.Keys)
    {
        write-host("File Key: " + $key)
    }
   
    #output the associated item's fields
    foreach($field in $item.Fields)
    {
        write-host("Item Field: " + $field.InternalName)
    }
    break;
}