上次修改时间: 2010年1月14日
适用范围: SharePoint Foundation 2010
Windows PowerShell™ 是 Microsoft 提供的一种新的命令行工具和支持脚本语言,用于补充 Windows 管理上下文中的 Cmd.exe,并替代 Stsadm.exe 管理工具。尽管为了实现向后兼容仍会保留 Cmd.exe 和 Stsadm.exe,但 SharePoint Foundation 中脚本和管理文件的所有当前和未来开发都应使用这种新的脚本技术。
Windows PowerShell 基础知识
大多数命令行工具都是接受和返回文本,Windows PowerShell 则不同,它基于 Microsoft .NET Framework 构建,接受和返回 .NET Framework 对象。环境方面的这一根本改变产生了全新的工具和方法,大大提高了开发人员和管理员的控制力、效率和生产率。
Windows PowerShell 是一个引入了 cmdlet 概念的简单命令行工具。cmdlet 是一个由命令及其所作用的对象组成的动词-名词组合。Windows PowerShell cmdlet 名称包含由短划线 (-) 分隔的动词和名词,用于共同表示 cmdlet 的功能属性。例如,cmdlet 名称 Get-SPSite 使用动词(命令)"Get"和名词(对象)"SPSite"来命名用于检索指定的 SPSite 对象的 cmdlet。可以单独使用 cmdlet,也可以在链接的序列中将 cmdlet 链接起来以执行复杂任务。
Cmdlet 名词采用参数作为指定 cmdlet 名词特征的名称值对。调用 cmdlet 时,它们会返回输出对象。返回的对象也具有显示为名称值对的属性。由于 cmdlet 返回对象,因此可以将这些对象依次传递(或"传送")给另一个 cmdlet。通过这种方式可将 cmdlet 链接起来,从而提供极大的灵活性。
实际上,这只是 Windows PowerShell cmdlet 与 stsadm.exe 中命令之间巨大差别的开始。例如,值得注意的是,cmdlet 不是可执行文件,而是 .NET Framework 类的实例。因此,除某些例外情况外,cmdlet 返回对象而不是文本流,并通过对象管道来处理输入对象。
显而易见,Windows PowerShell 不仅仅是一个新的命令行工具,它还是一个新的脚本语言,这一点可能更重要。Windows PowerShell 会在本地安装 100 多个核心 Windows cmdlet。SharePoint Foundation cmdlet(目前数量超过 500)的库安装在这些核心 Windows cmdlet 的顶端。这些特定于 SharePoint 的 cmdlet 在特殊的专用外壳(称为 SharePoint Management Shell)中公开。
用于 SharePoint Management Shell 的 Cmdlet
Windows PowerShell 同时提供一般实现和特定于 SharePoint 的实现。两者之间的根本差别是:Windows PowerShell cmdlet 派生自基类 PSCmdlet,SharePoint Foundation cmdlet 则派生自名为 SPCmdlet 的专用 SharePoint 基类。
重要信息 |
|---|
Windows PowerShell cmdlet(派生自 PSCmdlet 类)与 SharePoint cmdlet(派生自 SPCmdlet 类)之间的差别非常重要。SharePoint Foundation 附带的所有 SharePoint cmdlet 以及 SharePoint Management Shell 中公开的所有 SharePoint cmdlet 都派生自 SPCmdlet 类。此外,您编写的用于支持 SharePoint 部署的所有自定义 cmdlet 也都必须是 SharePoint cmdlet。 |
以下是 SPCmdlet 基类的签名。请注意,SPCmdlet 派生自 PSCmdlet 类。
public abstract class SPCmdlet : PSCmdlet
请注意,在使用变量运算符 cmdlet(包括 Get、Set、New 和 Remove)时,必须使用特定的 SPCmdlet 类实现,而不使用从 PSCmdlet 类派生的类实现。这与用于在 SharePoint Foundation 中使用 Windows PowerShell cmdlet 的脚本模型是一致的。
对于处理永久对象的 cmdlet:
Get cmdlet:SPGetCmdletBase<TCmdletObject>
Set cmdlet:SPSetCmdletBase<TCmdletObject>
New cmdlet:SPNewCmdletBase<TCmdletObject>
Remove cmdlet:SPRemoveCmdletBase<TCmdletObject>
对于处理非永久对象的 cmdlet:
对于操作 cmdlet:
重要信息