May 10, 2009

Power WebPart 3.0 – Runas-System

In general code in SharePoint runs with the privileges of the current user, but sometimes you need to run code with elevated privileges. The SharePoint object model covers this scenario with the SPSecurity.RunWithElevatedPrivileges. In Power WebPart you can use the “Runas-System” function to run script with elevated privileges. Usage: Runas-System –script
Example 1: Output Current Identity
function render($writer)
{
   $identiy1 = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
   $identiy2 = Runas-System "[System.Security.Principal.WindowsIdentity]::GetCurrent().Name"

   $writer.Write($identiy1)
   $writer.Write($identiy2)
}
Example 2: Call a Function with Parameters
function Render-Identity($writer)
{
    $identity = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    $writer.Write($identity)
}  
function render($writer)
{
   Render-Identity $writer
   Runas-System "Render-Identity `$writer"
}
Example 3: Call a Function with Return Value
function Get-Identity
{
    return [System.Security.Principal.WindowsIdentity]::GetCurrent().Name 
}

function render($writer)
{
   $identity1 = Get-Identity
   $identity2 = Runas-System "Get-Identity"

   $writer.Write($identity1)
   $writer.Write($identity2)
}
Example 4: Impersonate SPWeb
function render($writer)
{
   $writer.Write($web.CurrentUser.LoginName)

    $impersonatedWeb = Runas-System "Get-SPWeb $($web.Url)"
    $writer.Write($impersonatedWeb.CurrentUser.LoginName)
    $impersonatedWeb.Dispose()
}

0 comments: