第2章 SharePoint Windows PowerShell指南

SharePoint 2010是SharePoint系列产品中第一个开始支持Windows PowerShell的产品,在以前的版本中,SharePoint使用stsadm.exe来执行SharePoint管理和维护等工作,并通过在Windows控制台运行的批处理文件执行解决方案部署、站点备份还原等操作。

2.1 快速了解Windows PowerShell

PowerShell更加容易读写,PowerShell将所有待处理的内容看成对象,管理员或者开发人员可以通过PowerShell调用.NET 对象或者COM对象。进一步,PowerShell对exe执行文件也有很好的支持,可以通过传参的方式让exe执行文件按照条件执行。 同MSDOS类似,有两种方式可以执行PowerShell:第一,管理员或开发人员可以直接在Windows PowerShell控制台窗口输入执行命令并执行;第二,管理员或开发人员也可以像批处理文件一样写好脚本后根据需要单击执行,或者通过如Windows定时任务这样的定时任务工具来调用

用第一种方式熟悉PowerShell,单击屏幕左下角的“开始”按钮,单击所有程序->附件->Windows PowerShell打开Windows PowerShell控制台窗口。

(1)输入“cd\”然后回车,此命令将把当前工作目录设置为C盘根目录。

(2)输入“cls”然后回车,此命令会进行清屏。

(3)输入“1 + 2”然后回车,PowerShell会进行计算并将计算结果显示

Windows PowerShell建立在可以重复的被称之为命令集(cmdlets)的功能集合之上,命令集的命令多遵从“动词+名词”的命名规范。例如,内置的命令Get-Process,运行将返回当前服务器上正运行的Windows进程的列表。

在Windows PowerShell的开发中,管道是一个非常重要的概念,用“|”表示,这实际上是借用了UNIX以及Linux平台下的概念,运行在UNIX平台上的CShell,以及BShell从很早的版本就开始使用“|”管道。通俗地理解管道,就是把在“|”之前运行命令执行的结果作为参数传给在“|”之后的命令作为输入参数

通常如下: cmdlet1 | cmdlet2 | cmdlet3

比如在上例中运行的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*"}

2.2 书写Windows PowerShell脚本

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”来运行脚本文件

2.3 使用Windows 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

2.4使用Windows PowerShell管理SharePoint

2.4.1 使用PowerShell创建Web应用程序

$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应用程序

2.4.2 使用PowerShell创建网站集

使用以下命令:

$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指定了创建站点时使用的模板

2.5 常用的shell语句

在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

SharePoint 2010 最佳实践学习总结------第2章 SharePoint Windows PowerShell指南的更多相关文章

  1. SharePoint 2010 最佳实践学习总结------第1章 SharePoint Foundation开发基础

    ----前言 这段时间项目出在验收阶段,不是很忙,就潜心把SharePoint学一下,不求有多深刻,初衷只是先入门再说.后续会发布一系列的学习总结.主要学习的书籍为<SharePoint2010 ...

  2. 【SharePoint学习笔记】第2章 SharePoint Windows PowerShell 指南

    快速了解Windows PowerShell     从SharePoint 2010开始支持PowerShell,仍支持stsadm.exe工具:     可以调用.NET对象.COM对象.exe文 ...

  3. [SharePoint 2010] SharePoint 2010 部署、收回和删除解决方案----STSADM和PowerShell

    STSADM stsadm -o addsolution –filename c:\bin\CustomerSiteSearch.wsp stsadm -o deploysolution –name ...

  4. 在 SharePoint 2010 中访问数据

    转:http://blog.banysky.net/?p=81001 数据访问的关键方法有哪些? | 使用查询类 | 使用 SPQuery | 使用 SPSiteDataQuery | 使用 LINQ ...

  5. 自定义和扩展 SharePoint 2010 Server 功能区

    了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...

  6. SharePoint 2010 开发人员学习指南

    kaneboy 翻译,一切内容版权归 Microsoft.1. SharePoint 开发起步教程 这是一个为准备进入到 SharePoint 开发领域的 .NET 开发人员所准备的免费在线学习课程. ...

  7. SharePoint 2010 站点附加数据升级到SP2013

    首先,去SharePoint 2010的数据库服务器上,找到站点的数据库,备份.还原到SharePoint 2013环境中: 如果不知道数据库服务器是哪台,可以通过服务器场上的服务器查看: 如果不知道 ...

  8. SharePoint 2010升级到sharePoint 2013后,人员失去对网站的权限的原因及解决方法。The reason and solution for permission lost after the upgrading

    昨天碰到了一个问题,一个网站在从SharePoint 2010升级到SharePoint 2013后,人员都不能登录了,必须重加赋权,人员才能登录,这样非常麻烦. 原因:是认证方式的问题.在Share ...

  9. sharepoint 2010 重建遇到的问题

    需要重新安装Sharepoint 2010 ,遇到问题记录下来,sharepoint中安装了热补丁和英文语言包. 卸载: 1.运行配置向导将服务器从服务场中脱离: 2.在管理中心中卸载sharepoi ...

随机推荐

  1. PHP字符串——编码与转义

    因为PHP程序经常与HTML页.Web地址(URL)以及数据库交互,所以PHP提供一些函数来帮助你处理这些类型的数据.HTML.Web页地址和数据库命令都是字符串,但是它们每个都要求不同的字符以不同的 ...

  2. c# ref关键字对于引用类型传递的影响

    我们可能见到下面的代码 public static void StringBuilderNoRef(StringBuilder s)     { s.Append(" World" ...

  3. 基于Spring框架的Web应用开发笔记 - Outline

    Motivation 最近的工作涉及Web框架搭建,在了解公司原有采用框架基础上对Web开发技术栈做了一次升级,在次做记录. Audience J2EE Web Application Develop ...

  4. LinkedHashSet与TreeSet

    区别 类型 实现 特点 TreeSet hashMap.实现sortedSet接口 升序(基本类型--),自定义 LinkedHashSet HashSet 初始顺序 **注意点: 1.treeSet ...

  5. makefile--模式规则(七)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 上一节讲到目录创建成功,目标文件没有生产到对应目录下,这里我们先给目标文件加上对应目录,这样的话 ...

  6. php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解

    include()与require()的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间.他们最根本的区别在于错误处理的方式不一样. 1.处理错误的方式: require()一个文件存在错误的话 ...

  7. 三国游戏 2010年NOIP全国联赛普及组

    题目描述 Description 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有N 位武将(N 为偶数且不小 ...

  8. mysql5.6启动占用内存很大的解决方法

    vps的内存为512M,安装好nginx,php等启动起来,mysql死活启动不起来看了日志只看到对应pid被结束了,后跟踪看发现是内存不足被killed; 调整my.cnf 参数,重新配置(系统默认 ...

  9. PHP字符串

    <?php $string1 = <<<EVILXR 我有一只小毛驴,我从来也不骑. 有一天我心血来潮,骑着去赶集. 我手里拿着小皮鞭,我心里正得意. 不知怎么哗啦啦啦啦,我摔 ...

  10. about java techelogly

    https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html Differences between Java EE ...