SharePoint 2010是SharePoint系列產品中第一個開始支持Windows PowerShell的產品,在之前的版本中,SharePoint使用stsadm.exe來執行SharePoint管理和維護等工做,並經過在Windows控制檯運行的批處理文件執行解決方案部署、站點備份還原等操做。shell
PowerShell更加容易讀寫,PowerShell將全部待處理的內容當作對象,管理員或者開發人員能夠經過PowerShell調用.NET 對象或者COM對象。進一步,PowerShell對exe執行文件也有很好的支持,能夠經過傳參的方式讓exe執行文件按照條件執行。 同MSDOS相似,有兩種方式能夠執行PowerShell:第一,管理員或開發人員能夠直接在Windows PowerShell控制檯窗口輸入執行命令並執行;第二,管理員或開發人員也能夠像批處理文件同樣寫好腳本後根據須要單擊執行,或者經過如Windows定時任務這樣的定時任務工具來調用緩存
用第一種方式熟悉PowerShell,單擊屏幕左下角的「開始」按鈕,單擊全部程序->附件->Windows PowerShell打開Windows PowerShell控制檯窗口。服務器
(1)輸入「cd\」而後回車,此命令將把當前工做目錄設置爲C盤根目錄。app
(2)輸入「cls」而後回車,此命令會進行清屏。工具
(3)輸入「1 + 2」而後回車,PowerShell會進行計算並將計算結果顯示網站
Windows PowerShell創建在能夠重複的被稱之爲命令集(cmdlets)的功能集合之上,命令集的命令多聽從「動詞+名詞」的命名規範。例如,內置的命令Get-Process,運行將返回當前服務器上正運行的Windows進程的列表。url
在Windows PowerShell的開發中,管道是一個很是重要的概念,用「|」表示,這其實是借用了UNIX以及Linux平臺下的概念,運行在UNIX平臺上的CShell,以及BShell從很早的版本就開始使用「|」管道。通俗地理解管道,就是把在「|」以前運行命令執行的結果做爲參數傳給在「|」以後的命令做爲輸入參數對象
一般以下: cmdlet1 | cmdlet2 | cmdlet3blog
好比在上例中運行的Get-Process返回了太多的結果,但實際上咱們只想瞭解關於IIS工做進程w3wp進程的相關信息,咱們可使用Where-Object命令在Get-Process命令返回的結果集裏進行過濾,Where-Object使用「{}」裏的內容做爲過濾條件,「$_」表明將要被過濾的對象,「ProcessName」是該對象的某個屬性,「-like」是比較條件,「w3*」經過通配符代表以「w3」開頭,該過濾將返回全部進程名以「w3」開頭的進程信息。進程
須要注意的是,一般狀況下Windows PowerShell在作字符串比較時對大小寫並不敏感,若是但願Windows PowerShell對大小寫敏感,只需在比較符號前加入一個c,例如: Get-Process | Where-Object {$_.ProcessName -clike "W3*"}
Windows PowerShell腳本就是以ps1做爲後綴的文本文件,SharePoint管理員和開發人員可使用記事本直接編輯腳本
打開記事本,輸入如下命令後存爲script1.ps1,在C:\Scripts下面。 Write-Host 「Hello World!」 保存好之後,首先嚐試從Windows PowerShell控制檯運行該文件,打開控制檯,經過「Set-Location C:\Scripts」或者「cd C:\Scripts」,在PowerShell控制檯窗口輸入「.\script1.ps1」,其中後綴「ps1」能夠省略不輸入,「.」表示當前目錄,「.\script1.ps1」表示當前目錄下的script1.ps1文件
咱們還能夠經過批處理文件來執行該腳本文件。在C:\Scripts目錄下創建一個Auto.bat的批處理文件,在文件裏輸入如下內容: powershell.exe –Command 「&{.\script1.ps1}」 pause 須要輸入pause是爲了防止批處理文件運行完後自動退出,pause命令會強制命令窗口等待用戶輸入後再退出,最後能夠直接經過右鍵單擊腳本文件,從下拉列表裏單擊「Run with PowerShell」來運行腳本文件
Windows Server 2008服務器,能夠經過管理工具->服務器管理->添加功能(Feature)將ISE做爲功能添加進來
經過「$」來建立變量sum1和sum2,而不須要向C#裏面那樣事先聲明,下面再看一個帶流程控制的例子:
$names = 「YangGuo」, 「XiaoLongNv」, 「GuoJing」, 「HuangRong」 Foreach($name in $names){ Write-Host $name } Windows PowerShell強大的一處在於,在PS腳本里能夠直接調用任意.NET 對象,好比如下代碼就會調用New-Object命令建立一個.NET 的DateTime對象: $date = New-Object –TypeName System.DateTime –ArgummentList @(1525, 8, 10, 0, 0, 0) $message = 「GuoJing was born at 「 + $date.ToLongDateString() Write-Host $message
執行輸出結果以下:
GuoJing was born at Monday, August 10, 1525 PowerShell不只能夠建立新的.NET 對象,還能夠調用.NET 對象的靜態屬性。例如,開發人員能夠經過[System.DateTime]::Today的方式調用DateTime類的靜態成員。 $today = [System.DateTime]::Today Write-Host $today.ToLongDateString() Write-Host $today.ToString(「MM/dd/yy」) Write-Host $today.AddDays(100).ToString(「MMMM d」)
執行輸出結果以下: Wednesday, May 25, 2
$name = "Web Application from PowerShell" $port = 10000 $url = http://win-i53t3ji4m13 $appPoolName = "SharePoint - 10000" $appPoolAccount = "win-i53t3ji4m13\SPService10000" New-SPWebApplication -Name $name -Port $port -URL $url -ApplicationPool $appPoolName –ApplicationPoolAccou
上述腳本首先設置了一些建立新的Web應用程序必需的信息,例如名字、端口號、URL、新的應用程序池名字、即將用在新的應用程序池上的服務帳號,而後調用SharePoint PowerShell命令New-SPWebApplication建立Web應用程序
使用如下命令:
$title= "Creating site collection from PowerShell" $url = "http://win-i53t3ji4m13:10000" $owner = "win-i53t3ji4m13\Administrator" $template = "STS#1" # delete target site collection if it exis $targetSite = Get-SPSite | Where-Object {$_.Url -eq $url} if ($targetSite -ne $null) { Remove-SPSite -Identity targetSite -Confirm:$false } # create new site collection New-SPSite -URL $url -Name $title -OwnerAlias $owner -Template $template
命令執行的時候先判斷站點集是否存在,若是存在先刪除。另外-Template指定了建立站點時使用的模板
在SharePoint Manage Shell中執行部署、卸載、升級等一些列跟解決方案相關的工做
添加Solution到ServerFarm中
Add-SPSolution –LiteralPath C:\Test.wsp
或
Add-SPSolution C:\Test.wsp
部署指定的Solution到指定的WebApplication上
Install-SPSolution -Identity Test.wsp –WebApplication http://testetw/ GACDeployment
意爲:將名爲Test的解決方案部署到http://testetw/應用程序中,併爲其部署全局緩存,
更新部署Solution
Update-SPSolution –Identity Test.wsp –LiteralPath C:\Update\Test.wsp –GACDeployment
回收已部署的Solution
Uninstall-SPSolution –Identity Test.wsp –WebApplication http://testetw/
移除Solution
Remove-SPSolution –Identity Test.wsp