Using PowerShell scripts to modify document properties in SharePoint 2010
I recently had to find a way to add a value to the "Title" property of documents in a list. There are many ways to do this, but PowerShell seems to be pretty powerful when it comes to this type of direct manipulation. Since all my customer needed was to assign a value to the "Title" property, we decided to loop through all the documents and assign "Title" from "Name". Here is a sample of that script.
# Load SharePoint library
[system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint")
# Connect to the site collection https://SP2010 and store the object in the $site variable
$site = New-Object Microsoft.SharePoint.SPSite("https://SP2010")
# Connect to the root site in the site collection and store the object in $root
$root = $site.rootweb
# Store the Shared Documents document library in a variable $Docs
$docs = $root.lists["Shared Documents"]
# Display all the documents, their titles, names and IDs
$docs.items | format-table -property title,name,id
# Updates the title for each item in the list with Name
$docs.items | ForEach { $_["Title"] = $_["Name"]; $_.Update() }
# Display all the documents, their titles, names and IDs
$docs.items | format-table -property title,name,id
The important line is where the items are being enumerated. The tricky part is making sure you don't miss the period before the Update call.
Comments
Anonymous
October 11, 2013
The comment has been removedAnonymous
October 11, 2013
The comment has been removedAnonymous
October 11, 2013
Justin, Do you get values on the print-out prior to that? It looks like you could have a null value in the name field. PaulAnonymous
November 20, 2013
This is spot on exactly what I was trying to achieve on our site. Thanks a bunch Paul!Anonymous
November 20, 2013
Thanks Gray - glad to see it helped you. I haven't had to think about this in some time, so I'm glad to see what I wrote about helped.