Showing posts with label Site Column. Show all posts
Showing posts with label Site Column. Show all posts

Friday, August 16, 2013

Create SharePoint Choice Field (Site Column) using PowerShell

Start-SPAssignment -Global
$url = "siteurl"
$web = get-spweb $url

$fieldName = "Surya"
$field = $web.Fields[$fieldName]

 if($field -ne $nul)
 {
      Write-Host $field.Title "Field already avilable in the site"
 }
 else
 {

#There are 2 ways to create a field.
#First Apporach
 <#
      Write-Host "no fields exist with this name. creating..."
      $web.fields.add($fieldName, "Choice", $true)
      $field = $web.fields.getfield($fieldName)
      $field.Group = "Custom Columns"
      $field.Choices.Add("Yes")
      $field.Choices.Add("No")
      $field.Update()
     Write-Host "Field Created"
#>

#Second Apporach

      $suryafield = "<Field Type='Choice' DisplayName='Surya' Required='TRUE' Format='Dropdown' Group='Custom Columns'
      FillInChoice='FALSE' StaticName='Surya' Name='Surya'>
            <CHOICES>
                <CHOICE>YES</CHOICE>
                <CHOICE>NO</CHOICE>
            </CHOICES>
           </Field>"
      $web.Fields.AddFieldAsXml($suryafield)
  Write-Host "Field Created"
 }

 Stop-SPAssignment -Global


Tuesday, July 9, 2013

Check Column exist in SharePoint List using Powershell

Sometimes when we are working with SharePoint list items will get an error like

Column has been deleted by another user or not exist.

for this we can use below code to check column exist or not

 foreach($list in $web.Lists)
      {
         if($list.BaseType -eq "DocumentLibrary")
         {
              if( $list.Fields.ContainsField("ddlTest") -eq $true)
               {                                       
               Write-Host "found" $list.title
               }
               else
               {
                #  Write-Host "not found"  
               }
         }
      }

Wednesday, July 3, 2013

Add Field or Column to ContentType and set the column order



When you run below script it will add a field to content type and set the order. For my field I want to set the order next to ‘SAC Doc’ filed. For that I am reading existing index of ‘SAC Doc’ field and setting to my new field.

For column order you can refer this post as well

  http://sharepointempower.com/2013/03/column-ordering-in-sharepoint-2010/

It will create a log file in your location where you are running your script

function SetColumnOrder([Microsoft.SharePoint.SPContentType]$contentType)
 {
            #Write-Host $contentType.name
            [Microsoft.SharePoint.SPFieldLinkCollection]$flinks = $contentType.FieldLinks;
               #array object
               $fieldsArray = New-Object 'System.Collections.Generic.List[string]';

          #Read all the InternalNames of the FieldLinks into a list
          foreach($fieldLink in $flinks){
               $fieldsArray.Add($contentType.Fields[$fieldLink.ID].InternalName);
          }
     
              $fieldchkboxInternalName =$contentType.Fields["SAC DOC"].InternalName
             # Write-Host $fieldchkboxInternalName
              $fieldDDLInternalName =$contentType.Fields["ddlTest"].InternalName
             
          if($fieldsArray.Contains($fieldchkboxInternalName)){

              $indexChkbox = $fieldsArray.IndexOf($fieldchkboxInternalName)
                    #Write-Host "checkbox index:" $indexChkbox
                   
                    $indexDDL = $fieldsArray.IndexOf($fieldDDLInternalName)
                     #Write-Host "ddlindex:"  $indexDDL
                     #Write-Host  "fieldsArraycount" $fieldsArray.Count
                   
                    if($indexChkbox -ne $indexDDL )
                {
                          $fieldsArray.RemoveAt($indexDDL)
                         
                          if($indexChkbox -le $fieldsArray.Count -1){
                           $fieldsArray.Insert($indexChkbox,$fieldDDLInternalName)
                                     Write-Host "SAC ddl index:"  $fieldsArray.IndexOf($fieldDDLInternalName)
                                     $msg = ("{0},{1}" -f "SAC ddl index order :", $fieldsArray.IndexOf($fieldDDLInternalName))
                                    $msg | out-file -FilePath $logfile  -append
                          }
                       #else{
                        #  $fieldsArray.Add($fieldDDLInternalName);
                        #}
                        }
             #Add the array to the reorder
             $flinks.Reorder($fieldsArray.ToArray());
             #Update the ContentYpe
             $contentType.Update($true)

            }
                             
}


$URL = "http://spdev5:8002/sites/library"
$site = New-Object Microsoft.SharePoint.SPSite($URL)
$web = $site.openweb("")


#logging
$timestamp = get-date -format "yyyyMMdd_hhmmtt"
$filenameStart = "SAC_AddField2ContentTypes"
$logfile = ("{0}{1}.csv" -f $filenamestart, $timestamp)

$header = "S.No,Message"
$header | out-file -FilePath $logfile



$fieldName = "ddlTest"
$field = $web.Fields[$fieldName]
#$ct = $web.ContentTypes[$contentTypeName]
Write-Host "Fieldname:" $field
$index=40
$ContentTypes = $web.ContentTypes

 try{

      foreach ($ContentType in $ContentTypes)
      {
          $contentTypeGroup = $ContentType.Group
          $contentTypeName = $ContentType.Name

          if ( $contentTypeGroup  -like '*DMID*')
          {
              
                   #if($ContentType.Fields["SAC DOC"] -ne $null)
                   #{
                    #  write-host $ContentType.Name #$MyField.Id
                        #$MyField=$ContentType.Fields["SAC DOC"]
                      #$ContentType.FieldLinks[$MyField.Id].Required=$true
                  # }
                 
                  #if($ContentType.Name -eq  "Laboratory Normal Ranges")
                  if($ContentType.Name -eq "CI"  -or $ContentType.Name -eq "Lab" )
                  {    
                        if($ContentType.Fields["ddlTest"] -eq $null)
                        {
                              $link = new-object Microsoft.SharePoint.SPFieldLink $field
                              $ContentType.FieldLinks.Add($link)
                              $ContentType.Update($true)
                              write-host "'SAC Doc' dropdownlist added to: " $ContentType.Name
                              $msg = ("{0},{1}" -f "'SAC Doc' dropdownlist added to:", $ContentType.Name)
                              $msg | out-file -FilePath $logfile  -append
                              SetColumnOrder $ContentType
                              #break;    
                        }
                        else
                        {
                              write-host  "'SAC Doc' dropdownlist already added to: " $ContentType.Name -BackgroundColor Red
                              $msg = ("{0},{1}" -f "'SAC Doc' dropdownlist already added to:", $ContentType.Name)
                              $msg | out-file -FilePath $logfile  -append
                        }
                       
                  }
                 
          }
       }
 }
 catch [System.Management.Automation.ExtendedTypeSystemException]
 {
    Write-Host $_.Exception.ToString()
       $msg = ( "{0},{1}" -f "Error occurred while reading list..:", $_)
       $msg | out-file -FilePath $logfile  -append
 }

$web.Dispose()
$site.Dispose()




Friday, June 28, 2013

Uncheck SharePoint 2010 Site Column type checkbox using Powershell

$site = New-Object Microsoft.SharePoint.SPSite("yoursiteurl")
$web = $site.openweb("")

$Library = "working documents"$DocLib = $web.lists[$Library]

Write-Host "title"  $DocLib

foreach ($item in $DocLib.items)
{

if($item["ARCHIVED"]) #if it is checked (Archived is a site col)
{
      write-host "Archived:"  $item["ARCHIVED"] $item.title       $item["ARCHIVED"] = "0" #Uncheck the checkbox
      $item.Update()
      write-host "Archived:" $item["ARCHIVED"]
}

}


$web.dispose()
$site.dispose()


Followers