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
完成 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|selectversion
if($ver.Version.Major-gt1){$Host.Runspace.ThreadOptions=
"ReuseThread"}
Add-PsSnapinMicrosoft.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-nounSP*
下圖中標示的就是利用命令獲取到的命令信息。
如果使用SP*這樣的命令獲取到的信息,非常的多。我們可以在細化以下我們的命令。例如使用 SPSite
PS>Get-Command-NounSPSite
獲取到結果:
使用SharePoint PowerShell 命令
讓我們來看一下 Get-SPSite 命令是如何使用,嘗試在SharePoint PowerShell使用這個命令,看一下命令返回的信息。
PS>Get-SPSite
Url
---
http://spservername
這個命令會返回所有網站集的Url,但如果我們需要了解單獨一個網站集的更多的信息,該如何做呢。
我們可以利用Select-Object命令來顯示額外的屬性信息。例如:我們可以使用 –Identity 來指定一個網站集的名稱,然後利用 Select-Object 來獲取這個網站集的一些信息
PS>Get-SPSite-Identityhttp://localhost|Select-Object-PropertyUrl,Zone,Port
當然我也可以通過命令來改變網站集的一些特定屬性,首先讓我們來學習如何利用Set-SPSite命令向網站集中添加網站集的第二管理員。
PS>Get-SPSite-Identityhttp://SPServer|Set-SPSite-SecondaryOwnerAliasdomain/user
如果我們再一次使用Select-Object命令就可以來顯是SecondaryContact這個屬性信息。讓我們領用這個命令來查看一下剛剛添加的第二管理員的名字。
PS>Get-SPSite-Identityhttp://localhost |Select-Objec SecondaryContact
你可以將 SPSite 作爲一個對象保存在一個變量中,例如:
PS>$spSite=Get-SPSite-Identityhttp://SPServer
這樣我們就可以向這個變量中添加它的第二管理員了,我們也可以通Microsoft.SharePoint.SPUser 來返回一個網站中已有的用戶來做爲網站集的第二管理員,我們可以使用一下的命令:
PS>$spSite=Get-SPSite-Identityhttp://SPServer
PS>$spSite.SecondaryContact=(Get-SPUser-Webhttp://SPServer-Identitydomain/user)
如果我們需要添加一個在AD中的用戶,但並不在網站集中的用戶,成爲網站集的第二管理員。我們需要先通過New-SPUser命令添加一個用戶到網站集中,在利用命令將其添加爲網站第二管理員。
PS>$spUser=New-SPUser-Webhttp://SPServer-UserAliasdomain/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 命令來查看它的描述信息和使用的方法。