43
SHAREPOINT BRUGER GRUPPE (SPBG) http://spbg.dk

Http://spbg.dk. SharePoint Bruger Gruppe Vi skal snakke om Status på SPBG Ny struktur på vores ERFA møder Andre møder Dagens emne: PowerShell

Embed Size (px)

Citation preview

Page 1: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SHAREPOINT BRUGER GRUPPE (SPBG)

http://spbg.dk

Page 2: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

DAGENS PROGRAM

Vi skal snakke om Status på SPBG Ny struktur på vores ERFA møder Andre møder Dagens emne: PowerShell i

SharePoint 2010

Page 3: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

STATUS PÅ SPBG

Praktisk information Lokaler, sodavand og sandwich bliver

sponseret af Enabling Danmark Lokaler

Vi mangler sponsorer til lokaler til vores ERFA møder

Page 4: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger GruppeNY STRUKTUR PÅ VORES ERFA MØDER Mere diskussion!

Page 5: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

DAGENS EMNE

PowerShell i SharePoint 2010 af Per Jakobsen

Page 6: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

ANDRE MØDER

SharePoint dinner inden jul, følg med på http://spbg.dk og twitter.

Page 7: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

PAUSE

Page 8: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

POWERSHELL AGENDA

Introduction to Powershell PowerShell and SharePoint 2010 Custom Cmdlet PowerShell and SharePoint 2007 Actions

Per Jakobsen

Page 9: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

A SHELL LIKE UNIX

chdir cd Set-Location ls dir Get-ChildItem cp copy Copy-Item erase del Remove-Item mkdir New-Item –type

directory cat type Get-Content

Page 10: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

A SHELL LIKE UNIX

Aliases History (History, r, F7, F8) Tab completion (incl. wildcard) Piping (|) Redirecting (>, >>, 2>, 2>>, 2>&1) Tee

Page 11: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

A SHELL LIKE UNIX

grep (Select-String) Immediate expressions

2+2 “Hello ” + “World” Beware type of left side wins

2 + “2” “2” + 2 2 + “test”

Page 12: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

BETTER THAN UNIX SHELL

Virtual drivesC:, D:,… Disk drivesENV: Environment variablesHKLM:, HKCU: RegistryVariable: Variables… Get-PSDrive

Page 13: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

BETTER THAN UNIX SHELL

Objects as long as possible

Get-Process |Where-Object {$_.Handles –lt 500} |Sort-Object CPU –desc |Select-Object –first 5

Page 14: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

BETTER THAN UNIX SHELL

Output formatting Format-Table Format-Table –auto

Format-List

Page 15: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

VARIABLES

Prefixed by $ Untyped by default, but can be typed

$a = 1$a = “test”[int]$a = 1$a = “test” Error$a = “2” OK, converted to int

Page 16: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

VARIABLES

Default scope when setting: At command line Global In script Script In function Local

When reading first defined of Local, script, global

Can be specified: $global:a = 42

Page 17: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

VARIABLES

One Variable to rule them all, One Variable to find them all,One Variable to bring them all and in darkness bind them $_1..10 | Where-Object {$_%2 –eq 1} |ForEach-Object {$_*$_}

Page 18: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

LITERALS (STRING)

"text" – expands: $var Content of variable $(expr) Value of expression ` used as escape character (NOT \)

'Text' – not expanding @ " <<newline>> to <<newline>> " @ - here

text

Page 19: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

LITERALS (NUMBERS)

1 Int32 / Int64 0x10 Int32/ Int64 (hexadecimal) 1.1 Double 1kb * by 1024 1mb * by 1024*1024 1gb * by 1024*1024*1024

Page 20: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

LITERALS (OTHER)

1,2,3 Array 1..10 Array (Range) @(1) Wraps in array if not already array @{a=1;b=2} HashTable [System.Enviroment] => Type

Use :: to access static methods/properties

{code} ScriptBlock (delegate)

Page 21: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

FUNCTION (SIMPLE)

Function sqr($x){

$x*$x;}Sqr 4Sqr(5)

Page 22: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

FILTER

Filter odd{

if ($_ % 2 –eq 1){$_}

}1..10 | odd

Page 23: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

FUNCTION (ADVANCED)

Function test($x){

begin {“B:Param $x”}process {“P:Param $x value $_”}end {“E:Param $x”}

}1..10|test(42)

Page 24: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

.NET

Everything in PowerShell is “just” .Net

Tab completion through reflection$d = [System.DateTime]::Now$d.AddDays(42)

Page 25: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

XML

Just casting a xml string to [xml] gives you a nice XmlDocument

$sols = [xml](stsadm –o enumsolutions)$sols.Solutions.Solution[0]$sols.Solutions.Solution |Where-Object {$_.Name –like “*stsadm*”}

Page 26: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SECURITY

Secure out of the box Scripts (.ps1) are mapped to NotePad Current directory not in path (use .\xxx) By default doesn’t allow scripts

Change to allow local scripts:

Set-ExecutionPolicy RemoteSigned

Page 27: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

REMOTING

Enable-PSRemoting (once + restart) Interactive

BackgroundEnter-PSSession computer –Credential usr

$s = New-PSSession computer –Credential usrInvoke-Command $s { cmds }…Remove-Session $s

Page 28: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SELF DOCUMENTING

Get-Help Get-Help <<cmd>>Get-Help about_*

Get-Command –noun sp*

$a | Get-Members[System.Math] | Get-Members -static

Page 29: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

PAUSE

Page 30: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SHAREPOINT 2010

PowerShell knows nothing about SP2010

But “SP2010 Management Shell” does

Or

Add-SPShellAdmin (once)

Add-PSSnapIn Microsoft.SharePoint.Powershell

Page 31: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SP2010: SITES

New-SPSite url –OwnerAlias usr –Template XXXGet-SPSite urlRemove-SPSite urlRemove-SPSite url –confirm:$false

New-SPWeb url –Template XXXGet-SPWeb urlGet-SPSite url | Get-SPWebRemove-SPWeb url

Page 32: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SP2010: CONTENT

Get-SPWeb url | Select –Expand Lists | Select –Expand Items | Select Name, Url

(Get-SPWeb url).RecycleBin

Page 33: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SP2010: LOGS

Get-SPLogEvent –StartTime time –EndTime time | Where-Object {$_.Correlation –eq “guid” } |Select Message

Page 34: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SP2010: OBJECT MODEL

$web = Get-SPWeb url$web.Title$web.Title = “Title from PS”$web.Update()

Page 35: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SP2010: OBJECT DISPOSAL

Start-SPAssigment -global$web = Get-SPWeb url…Stop-SPAssignment -global

$gc = Start-SPAssigment$web = $gc | Get-SPWeb url…Stop-SPAssignment $gc

Page 36: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

PAUSE

Page 37: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

CUSTOM CMDLET

Add Reference: System.Management.Automation.dll Microsoft.SharePoint.Powershell.dll

Inherit from SPXXXCmdletBase Add Attributes

Cmdlet SPCmdlet

Add xml files in SPRoot\Config\PowerShell

Page 38: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SHAREPOINT 2007

PowerShell knows nothing about SP2007

But you can load the dll(s)

Then you can just use the object model

[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SharePoint”)

Page 39: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

SHAREPOINT 2007

$site = [Microsoft.SharePoint.SPSite] (“http://localhost”)$web = $site.OpenWeb()$web$web.Title$web.Title = “Updated from PS”$web.Update()$web.Dispose()$site.Dispose()

Page 40: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

USE PJA’S SP2007 STARTUP SCRIPT

To use PJA’s startup script do this once

Set-ExecutionPolicy RemoteSignedIf (!(Test-Path $profile)){New-Item –type file –force $profile}Notepad $profile<<copy/past from next slide>><<save>>. $profile

Page 41: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

PJA’S SP2007 STARTUP SCRIPTfunction Get-SPSite($url){ [Microsoft.SharePoint.SPSite]($url);}

# Setting up environment## Set up path for visual studio tools#function VsVars32(){ $vs100comntools = (Get-ChildItem env:VS100COMNTOOLS).Value $batchFile = [System.IO.Path]::Combine($vs100comntools, "vsvars32.bat") $cmd = "`"$batchfile`" & PATH" Set-Content env:\Path (cmd /c $cmd)[1].Split("=")[1]}VsVars32

# Setup path to SharePoint tools#New-Variable 12Hive "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12" -option constantSet-Content Env:\Path ((Get-Content Env:\Path)+";$12Hive\bin;c:\windows\system32\inetsrv")

# Load SharePoint Assembly#[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

Page 42: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

ACTIONS

Use Get-Help Use Get-Command Use Get-Member

Get Started

Page 43: Http://spbg.dk. SharePoint Bruger Gruppe  Vi skal snakke om  Status på SPBG  Ny struktur på vores ERFA møder  Andre møder  Dagens emne: PowerShell

SharePoint Bruger Gruppe

ANDRE MØDER

SharePoint dinner inden jul, følg med på http://spbg.dk og twitter.