Question

I have used following PS script to update a manage metadata column. Not sure how to go by updating a managed-metadata column. I know I need to only populate with "10;#Wholesale Agreement" in SalesType field. Why the code is not updating? I am getting error but wont give me details. [Ed: Per later answer by original poster the following updated code is working].

$webUrl = "http://intranet.nissan.usa/sites/sentra"
$web = Get-SPWeb $webUrl
$list = $web.Lists["sales"]
$ct = "Sales Agreements"
$f = "SalesType" #Column Name      
$newTerm = "10;#Wholesale Agreement|1274c09f-4a41-453e-8422-60601d61bd11"

foreach ($item in $list.items)
{
    try {
        If ($item.ContentType.Name -eq $ct)
        {           
            $field = $list.Fields[$f]
            $fieldValue = $item[$f]

            if($fieldValue -eq $null)
            {               
                $item[$field] = $newTerm                
                $item.Update();                     
            }
        } 
        }   
    catch{
        Write-Host $item.Name " error occured" 
        }   
} 
#finally dispose the web
$web.dispose()
Était-ce utile?

La solution

Here is the final version. I had to use SP Manager to get the guid of the term set. I am sure I can add more logic to PS script and look for actual term. But for now this works...

I updated the code with the working code in the original post and below.

$webUrl = "http://intranet.nissan.usa/sites/sentra"
$web = Get-SPWeb $webUrl
$list = $web.Lists["sales"]
$ct = "Sales Agreements"
$f = "SalesType" #Column Name      
$newTerm = "10;#Wholesale Agreement|1274c09f-4a41-453e-8422-60601d61bd11"

foreach ($item in $list.items)
{
    try {
        If ($item.ContentType.Name -eq $ct)
        {           
            $field = $list.Fields[$f]
            $fieldValue = $item[$f]
        if($fieldValue -eq $null)
        {               
            $item[$field] = $newTerm                
            $item.Update();                     
        }
    } 
    }   
catch{
    Write-Host $item.Name " error occured" 
    }   
}

finally dispose the web

$web.dispose()
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top