Category Archives: PowerShell

How to change the SharePoint web application physical IIS physical path

Recently, I needed to change the physical path of an already existing SPWebApplication.
This feature is not available from the Central Administration user interface. Of course the first option will be using SharePoint Management Shell.

Here are the steps to do that:

# Get the SPWebApplication using its url or id
$app = Get-SPWebApplication http://servername:port
# Display the currently set iis physical path
$app.IisSettings[[Microsoft.SharePoint.Administration.SPUrlZone]::Default].Path.ToString()
# Create a directory info object with the new required path
$newPathDirectoryInfo = New-Object -TypeName System.IO.DirectoryInfo -Argument List "F:\WebApplications\80"
# Assign the new directory info to the application iis settings
$app.IisSettings[[Microsoft.SharePoint.Administration.SPUrlZone]::Default].Path = $newPathDirectoryInfo
# Update the application
$app.Update()

Converting multiple SharePoint 2010 projects to SharePoint 2013

Converting/ migrating SharePoint 2010 projects to SharePoint 2013 involves changing TargetOfficeVersion to be 15.0, and changing TargetFrameworkVersion to be v4.0 or v4.5 in the Visual Studio csproj file.

When you have multiple SharePoint 2010 projects in your solution, it will not be an easy task!

The following PowerShell script is my trial to simplify converting multiple projects, hope it will help.
Just change the value of the $path variable to be your solution path (the folder containing your SharePoint projects).

# Path containing SharePoint 2010 projects 
$path = ""
cd $path
$files = get-childitem -recurse -filter *.csproj
foreach ($file in $files)
{
  "Filename: {0}" -f $($file.Name)
  $proj = [xml](Get-Content $file.FullName)
  $ns = new-object Xml.XmlNamespaceManager $proj.NameTable
  $ns.AddNamespace("dns", "http://schemas.microsoft.com/developer/msbuild/2003")
  $projectTypeGuids = $proj.SelectSingleNode("//dns:Project/dns:PropertyGroup/dns:ProjectTypeGuids", $ns)
  # Check to see if the project type is SharePoint
  if ($projectTypeGuids."#text" -like "*BB1F664B-9266-4fd6-B973-E1E44974B511*")
  {
    $targetOfficeVersion = $proj.SelectSingleNode("//dns:Project/dns:PropertyGroup/dns:TargetOfficeVersion", $ns)
    if($targetOfficeVersion -eq $null)
    {
      # Create TargetOfficeVersion element if not exist
      $targetOfficeVersion = $proj.CreateElement("TargetOfficeVersion")
      $targetOfficeVersion = $proj.SelectSingleNode("//dns:Project/dns:PropertyGroup", $ns).AppendChild($targetOfficeVersion)
    }
    # Change target office version
    $targetOfficeVersion.InnerText = "15.0"
    # Change target framework version
    $targetFrameworkVersion = $proj.SelectSingleNode("//dns:Project/dns:PropertyGroup/dns:TargetFrameworkVersion", $ns)
    $targetFrameworkVersion.InnerText = "v4.5"
    # Remove empty namespaces
    $proj = [xml] $proj.OuterXml.Replace(" xmlns=`"`"", "")
    $proj.Save($file.FullName)
  }
}