Yesterday I got a question on how to iterate through the columns of a list by using Powershell and the SharePoint Lists.asmx web service.
If you read previous post and saved the necessary environment variable declarations in your profile, the only thing you should do to start is:
$listservice = New-Object Lists
$listservice.Credentials=[System.Net.CredentialCache]::DefaultCredentials
Otherwise you have to go back to my last post and execute the first steps to declare the environment variables and compile and load the lists dll.
You can get access to the list by executing the GetList method on the Lists.amx web service. The required argument is the name of the list:
$list = $listservice.GetList("Employees")
You can view the title of the list:
$list.Title
Or the Guid:
$list.ID
You can get access to the fields (or columns) defined on your list by storing the field collection into a variable:
$fieldsnode = $listservice.GetList("Employees").Fields
But the return value of this Fields collection is an xml node. You can view the content of the field collection by executing the $fieldsnode.get_OuterXml() method but this returns you more than a page full of xml. But Powershell is smart enough to be able to handle the child nodes as objects. You can view the different fields by executing f.e. the $fieldsnode.get_ChildNodes().
And now we come to iterating through the field collection. A field exposes properties like Name (which is the InternalName when working with the SharePoint object model), the ID, the DisplayName, Type and a lot of other properties. You can iterate through the field collection and retrieve the internal name as follows:
$fieldsnode.get_ChildNodes() | foreach-object { $_.Name }
Nick this one is for you! Thanks for reading my blog.