Tuesday, November 27, 2012

How to Deploy Multiple Solutions using PowerShell Scropt in SharePoint 2010



$InstallDIR = "D:\CAWSP\Backup\4"
Write-Host "Working, Please wait...."
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

$Dir = get-childitem $InstallDIR -Recurse
$WSPList = $Dir | where {$_.Name -like "*.wsp*"}
Foreach ($wsp in $WSPList )
{
                $WSPFullFileName = $wsp.FullName
                $WSPFileName = $wsp.Name
                clear
                Write-Host -ForegroundColor White -BackgroundColor Blue "Working on $WSPFileName"

                try
                {
                                Write-Host -ForegroundColor Green "Checking Status of Solution"
                                $output = Get-SPSolution -Identity $WSPFileName -ErrorAction Stop
                }
                Catch
                {
                                $DoesSolutionExists = $_
                }
                If (($DoesSolutionExists -like "*Cannot find an SPSolution*") -and ($output.Name -notlike  "*$WSPFileName*"))
                {
                                Try
                                {
                                                Write-Host -ForegroundColor Green "Adding solution to farm"
                                                Add-SPSolution "$WSPFullFileName" -Confirm:$false -ErrorAction Stop | Out-Null

                                                Write-Host -ForegroundColor Green "Checking Status of Solution"
                                                $output = Get-SPSolution -Identity $WSPFileName -ErrorAction Stop
                                                $gobal = $null
                                                if ($output.Deployed -eq $false)
                                                {
                                                                try
                                                                {
                                                                                Write-Host -ForegroundColor Green "Deploy solution to all Web Apps, will skip if this solution is globally deployed"
                                                                                Install-SPSolution -Identity "$WSPFileName" -GACDeployment -AllWebApplications -Force -Confirm:$false -ErrorAction Stop | Out-Null
                                                                }
                                                                Catch
                                                                {
                                                                                $gobal = $_
                                                                }
                                                                If ($gobal -like "*This solution contains*")
                                                                {
                                                                                Write-Host -ForegroundColor Green "Solution requires global deployment, Deploying now"
                                                                                Install-SPSolution -Identity "$WSPFileName" -GACDeployment -Force -Confirm:$false -ErrorAction Stop | Out-Null
                                                                }
                                                }

                                                Sleep 1
                                                $dpjobs = Get-SPTimerJob | Where { $_.Name -like "*$WSPFileName*" }
                                                If ($dpjobs -eq $null)
                                {
                                Write-Host -ForegroundColor Green "No solution deployment jobs found"
                                }
                                                Else
                                                {
                                                                If ($dpjobs -is [Array])
                                                                {
                                                                                Foreach ($job in $dpjobs)
                                                                                {
                                                                                                $jobName = $job.Name
                                                                                                While ((Get-SPTimerJob $jobName -Debug:$false) -ne $null)
                                                                                                {
                                                                                                                Write-Host -ForegroundColor Yellow -NoNewLine "."  Start-Sleep -Seconds 5
                                                                                                }
                                                                                                Write-Host
                                                                                }

                                                                }
                                                Else
                                                {
                                                                                $jobName = $dpjobs.Name
                                                                                While ((Get-SPTimerJob $jobName -Debug:$false) -ne $null)
                                                                                {
                                                                                                Write-Host -ForegroundColor Yellow -NoNewLine "." Start-Sleep -Seconds 5
                                                                                }
                                                                                Write-Host
                                                }
                                                }
                                }
                                Catch
                                {
                                                Write-Error $_
                                                Write-Host -ForegroundColor Red "Skipping $WSPFileName, Due to an error"
                                                Read-Host
                                }
                }
                Else
                {
                                $skip = $null
                                $tryagain = $null
                                Try
                                {
                                                if ($output.Deployed -eq $true)
                                                {
                                                Write-Host -ForegroundColor Green "Retracting Solution"
                                                Uninstall-SPSolution -AllWebApplications -Identity $WSPFileName -Confirm:$false -ErrorAction Stop
                                                }
                                }
                                Catch
                                {
                                                $tryagain = $_
                                }
                                Try
                                {
                                                if ($tryagain -ne $null)
                                                {
                                                                Uninstall-SPSolution -Identity $WSPFileName -Confirm:$false -ErrorAction Stop
                                                }
                                }
                                Catch
                                {
                                                Write-Host -ForegroundColor Red "Could not Retract Solution"
                                }

                                Sleep 1
                                $dpjobs = Get-SPTimerJob | Where { $_.Name -like "*$WSPFileName*" }
                                If ($dpjobs -eq $null)
                {
                Write-Host -ForegroundColor Green "No solution deployment jobs found"
                }
                                Else
                                {
                                                If ($dpjobs -is [Array])
                                                {
                                                                Foreach ($job in $dpjobs)
                                                                {
                                                                                $jobName = $job.Name
                                                                                While ((Get-SPTimerJob $jobName -Debug:$false) -ne $null)
                                                                                {
                                                                                                Write-Host -ForegroundColor Yellow -NoNewLine "." Start-Sleep -Seconds 5
                                                                                }
                                                                                Write-Host
                                                                }
                                                }
                                Else
                                {
                                                                $jobName = $dpjobs.Name
                                                                While ((Get-SPTimerJob $jobName -Debug:$false) -ne $null)
                                                                {
                                                                                Write-Host -ForegroundColor Yellow -NoNewLine "." Start-Sleep -Seconds 5
                                                                }
                                                                Write-Host
                                }
                                }                             

                                Try
                                {
                                                Write-Host -ForegroundColor Green "Removing Solution from farm"
                                                Remove-SPSolution -Identity $WSPFileName -Confirm:$false -ErrorAction Stop
                                }
                                Catch
                                {
                                                $skip = $_
                                                Write-Host -ForegroundColor Red "Could not Remove Solution"
                                                Read-Host
                                }
                                if ($skip -eq $null)
                                {
                                                Try
                                                {
                                                                Write-Host -ForegroundColor Green "Adding solution to farm"
                                                                Add-SPSolution "$WSPFullFileName" -Confirm:$false -ErrorAction Stop | Out-Null
                                                                $gobal = $null
                                                                try
                                                                {
                                                                                Write-Host -ForegroundColor Green "Deploy solution to all Web Apps, will skip if this solution is globally deployed"
                                                                                Install-SPSolution -Identity "$WSPFileName" -GACDeployment -AllWebApplications -Force -Confirm:$false -ErrorAction Stop | Out-Null
                                                                }
                                                                Catch
                                                                {
                                                                                $gobal = $_
                                                                }
                                                                If ($gobal -like "*This solution contains*")
                                                                {
                                                                                Write-Host -ForegroundColor Green "Solution requires global deployment, Deploying now"
                                                                                Install-SPSolution -Identity "$WSPFileName" -GACDeployment -Force -Confirm:$false -ErrorAction Stop | Out-Null
                                                                }
                                                }
                                                Catch
                                                {
                                                                Write-Error $_
                                                                Write-Host -ForegroundColor Red "Skipping $WSPFileName, Due to an error"
                                                                Read-Host
                                                }

                                                Sleep 1
                                                $dpjobs = Get-SPTimerJob | Where { $_.Name -like "*$WSPFileName*" }
                                                If ($dpjobs -eq $null)
                                {
                                Write-Host -ForegroundColor Green "No solution deployment jobs found"
                                }
                                                Else
                                                {
                                                                If ($dpjobs -is [Array])
                                                                {
                                                                                Foreach ($job in $dpjobs)
                                                                                {
                                                                                                $jobName = $job.Name
                                                                                                While ((Get-SPTimerJob $jobName -Debug:$false) -ne $null)
                                                                                                {
                                                                                                                Write-Host -ForegroundColor Yellow -NoNewLine "." Start-Sleep -Seconds 5
                                                                                                }
                                                                                                Write-Host
                                                                                }
                                                                }
                                                Else
                                                {
                                                                                $jobName = $dpjobs.Name
                                                                                While ((Get-SPTimerJob $jobName -Debug:$false) -ne $null)
                                                                                {

                                                                                                Write-Host -ForegroundColor Yellow -NoNewLine "."  Start-Sleep -Seconds 5
                                                                                }
                                                                                Write-Host
                                                }
                                                }
                }
                Else
                {
                                Write-Host -ForegroundColor Red "Cannot Install $WSPFileName, Please try manually"
                                Read-Host
                }
}
}

How to Create a Site using PowerShell Script


Write-Host
# define variables for script
$SiteTitle = "Lab 1 - Getting Started"
$SiteUrl = "http://ServerName:1234/sites/HR"
$SiteTemplate = "STS#1"
# check to ensure Microsoft.SharePoint.PowerShell is loaded
$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
if ($snapin -eq $null) {
Write-Host "Loading SharePoint Powershell Snapin"
Add-PSSnapin "Microsoft.SharePoint.Powershell"
}

# delete any existing site found at target URL
$targetUrl = Get-SPSite | Where-Object {$_.Url -eq $SiteUrl}
if ($targetUrl -ne $null) {
  Write-Host "Deleting existing site at" $SiteUrl
  Remove-SPSite -Identity $SiteUrl -Confirm:$false
}

# create new site at target URL
Write-Host "Creating new site at" $SiteUrl
$NewSite = New-SPSite -URL $SiteUrl -OwnerAlias Administrator -Template $SiteTemplate -Name $SiteTitle
$RootWeb = $NewSite.RootWeb

# display site info
Write-Host
Write-Host "Site created successfully" -foregroundcolor Green
Write-Host "-------------------------------------" -foregroundcolor Green
Write-Host "URL:" $RootWeb.Url -foregroundcolor Yellow
Write-Host "ID:" $RootWeb.Id.ToString() -foregroundcolor Yellow
Write-Host "Title:" $RootWeb.Title -foregroundcolor Yellow
Write-Host "-------------------------------------" -foregroundcolor Green





Hot to get SPUser from sharepoint list item fileld



using (SPSite site = new SPSite(workflowProperties.SiteUrl))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList spList = web.Lists["MySpList"];
SPQuery spQuery = new SPQuery();
                    spQuery.Query = "<Where>--</And></Where>";
                    SPListItemCollection collListItems = spList.GetItems(spQuery);
                    foreach (SPListItem listItem in collListItems)
                    {
string EmpName = GetSPUser(listItem, "UserName");
}
    }
}


public SPUser GetSPUser(SPListItem spListItem, String fieldName)
        {
            SPUser spUser = null;
            try
            {
                if (fieldName != string.Empty)
                {
                    SPFieldUser field = spListItem.Fields[fieldName] as SPFieldUser;
                    if (field != null && spListItem[fieldName] != null)
                    {
                        SPFieldUserValue fieldValue = field.GetFieldValue(spListItem[fieldName].ToString()) as SPFieldUserValue;
                        if (fieldValue != null)
                        {
                            spUser = fieldValue.User;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return spUser;
        }

How to cancel running workflows in a sharepoint list using server code.

SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    web = site.OpenWeb();
                    SPWorkflowManager manager = site.WorkflowManager;
                    SPList list = web.Lists["mySPList"];
                    SPQuery q = new SPQuery();
                    q.Query = "<Where><Eq><FieldRef Name='EmpId'/><Value Type='Number'>" +Convert.ToInt32(lblEmpId.Text) + "</Value></Eq></Where>";
                   SPListItemCollection collection = list.GetItems(q);
                    foreach (SPListItem item in collection)
                    {
      foreach (SPWorkflow workflow in manager.GetItemActiveWorkflows(item))
                        {
                            foreach (SPWorkflowTask t in workflow.Tasks)
                            {
                                t["Status"] = "Canceled";
                                t.Update();
                            }
                            SPWorkflowManager.CancelWorkflow(workflow);
                        }
                        break;
                    }
                });

Saturday, November 17, 2012

How to restrict the '/_layouts/viewlsts.aspx' page from anonymous users in SharePoint 2010

Reference Links:
Locking down Office SharePoint Server sites
C:\inetpub\wwwroot\wss\VirtualDirectories\1234\web.config
<location path="_layouts/viewlsts.aspx">
            <system.web>
                  <authorization>
                       <allow users="domainname\user1,domainname\user2"/>
                        <deny users="?" />
                        <deny users="*" />
                  </authorization>
            </system.web>
      </location>
Inline image 1

Featured Post

Protect an API by using OAuth 2.0 with Azure Active Directory and API Management

Protect an API by using OAuth 2.0 with Azure Active Directory and API Management https://docs.microsoft.com/en-us/azure/api-management/api-...

Popular posts