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