Windows PowerShell 是一个可供管理员完全访问适用的应用程序编程接口 (API) 的命令行脚本工具,并且对于直接与 SharePoint 2010 产品 交互以对 Web 应用程序、网站集、网站、列表等进行操作的功能,能够解除锁定。另外,管理员可以编写 cmdlet(发音为“command-let”)的脚本,从而改善之前产品版本的体验。
Windows PowerShell 2.0 是安装 SharePoint 2010 产品 的必备软件。如有必要,您在运行 Microsoft SharePoint 产品准备工具时就会安装它。默认情况下,Windows PowerShell 位于以下路径:<%SystemRoot%>/System32/WindowsPowerShell/v1.0/PowerShell.exe。
完成 SharePoint 2010 产品安装后,适用的 Windows PowerShell cmdlet 可通过 SharePoint 2010 Management Shell 或 Windows PowerShell 控制台访问。通过命令行管理程序,您可以管理 SharePoint 2010 产品 的所有方面。您可以创建新的网站集、Web 应用程序、用户帐户、服务应用程序、代理等。来自命令行管理程序的命令将基于 Microsoft .NET 平台输出 SharePoint 对象。这些对象可用作后续命令的输入对象,或者存储在本地变量中供以后使用。
使用命令行管理程序,您不必注册包含 cmdlet 的管理单元。注册适用于 SharePoint 2010 cmdlet 的 Microsoft.SharePoint.PowerShell.dll 模块是自动完成的,由位于 %CommonProgramFiles%/Microsoft Shared/Web Server Extensions/14/Config/PowerShell/Registration 下的 SharePoint.ps1 文件中的 Add-PSSnapin Microsoft.SharePoint.PowerShell 行执行。如果选择使用 Windows PowerShell 控制台,则必须手动注册管理单元。
$ver = $host | select version
if ($ver.Version.Major -gt 1) {$Host.Runspace.ThreadOptions = "ReuseThread"}
Add-PsSnapin Microsoft.SharePoint.PowerShell
Set-location $home
以上命令式将SharePoint的管理命令注册到Windows PowerShell中。
SharePoint 2010 命令
在SharePoint 2010 PowerShell管理单元中包含500条以上的命令,你可以用它来完成很多管理任务。我们可以通过Get-Command获取到的命令列表。单Get—Command获取到是所有的Windows PowerShell的所有基础命令,例如:功能,别名,过滤器,脚本和应用程序。在所有的命令中开头字母为SP的是SharePoint所应用的命令。如果要知道SharePoint命令有那些,我们可以通过以下的命令获取到。
PS > Get-Command -noun SP*
下图中标示的就是利用命令获取到的命令信息。
如果使用SP*这样的命令获取到的信息,非常的多。我们可以在细化以下我们的命令。例如使用 SPSite
PS > Get-Command -Noun SPSite
获取到结果:
使用SharePoint PowerShell 命令
让我们来看一下 Get-SPSite 命令是如何使用,尝试在SharePoint PowerShell使用这个命令,看一下命令返回的信息。
PS > Get-SPSite
Url
---
http://spservername
这个命令会返回所有网站集的Url,但如果我们需要了解单独一个网站集的更多的信息,该如何做呢。
我们可以利用Select-Object命令来显示额外的属性信息。例如:我们可以使用 –Identity 来指定一个网站集的名称,然后利用 Select-Object 来获取这个网站集的一些信息
PS > Get-SPSite -Identity http://localhost | Select-Object -Property Url, Zone, Port
当然我也可以通过命令来改变网站集的一些特定属性,首先让我们来学习如何利用Set-SPSite命令向网站集中添加网站集的第二管理员。
PS > Get-SPSite -Identity http://SPServer | Set-SPSite -SecondaryOwnerAlias domain/user
如果我们再一次使用Select-Object命令就可以来显是SecondaryContact这个属性信息。让我们领用这个命令来查看一下刚刚添加的第二管理员的名字。
PS > Get-SPSite -Identity http://localhost | Select-Objec SecondaryContact
你可以将 SPSite 作为一个对象保存在一个变量中,例如:
PS > $spSite = Get-SPSite -Identity http://SPServer
这样我们就可以向这个变量中添加它的第二管理员了,我们也可以通Microsoft.SharePoint.SPUser 来返回一个网站中已有的用户来做为网站集的第二管理员,我们可以使用一下的命令:
PS > $spSite = Get-SPSite -Identity http://SPServer
PS > $spSite.SecondaryContact = (Get-SPUser -Web http://SPServer -Identity domain/user)
如果我们需要添加一个在AD中的用户,但并不在网站集中的用户,成为网站集的第二管理员。我们需要先通过New-SPUser命令添加一个用户到网站集中,在利用命令将其添加为网站第二管理员。
PS > $spUser = New-SPUser -Web http://SPServer -UserAlias domain/newuser
PS > $spSite.SecondaryContact = $spUser
当我们在PowerShell中初始化了一个对象的时候,就一定要使用Dispose()方法来释放这个内存空间。
PS > $spSite.Dispose()
为什么我们要在使用Dispose()命令呢?因为,类似SPWeb,SPSite,SPSiteAdministration对象使用时能占用大量的内存资源,所以我们利用PowerShell命令可以有效的降低内存的占用。在通常情况下,我们通过使用命令Get-SPSite来初始化一个对象,在调用结束以后会自动的释放资源。但这是这样不会将对象保存在一个变量中。在初始化一个对象时,我们可以使用Dispose()方法来释放内存,也可以使用Start-SPAssignment和 Stop- SPAssignment 命令来创建和释放存储区域。我们可以在PowerShell 中 使用 Get-Help Start-SPAssignment 或 Get-Help Stop-SPAssignment 命令来查看 它的描述信息和使用的方法。