
2.4 SharePoint Windows PowerShell插件
Windows PowerShell有一系列自己的核心库,这个库里包括像Write-Host、Get-Process、Where-Object这样的命令集,SharePoint也会安装自己的命令库集,称之为插件。当安装SharePoint Foundation的时候,SharePoint会安装一个核心的PowerShell插件Microsoft. SharePoint.PowerShell。但是在运行PowerShell控制台、或者以PS1文件运行PowerShell又或者在ISE环境里调用SharePoint的命令集之前一定要确认该库已经加载了进来。
启用SharePoint PowerShell插件
安装好SharePoint Foundation后,可以从所有程序->SharePoint 2010->SharePoint 2010管理PowerShell启动SharePoint PowerShell控制台,这个控制台与普通PowerShell控制台的区别在于,在启动时会自动加载Microsoft.SharePoint.PowerShell库。
启动该控制台后,尝试输入Get-SPWebApplication命令,如图2-10所示。

图2-10 获取Web应用程序列表
但如果是从传统的PowerShell控制台进去后运行该命令会得到以下错误提示,如图2-11所示。

图2-11 不能调用Get-SPWebApplication
如果要在传统控制台调用SharePoint命令集,必须在启动后显式地通过Add-PSSnapin命令加载SharePoint命令集Microsoft.SharePoint.PowerShell,运行结果如图2-12所示。
Add-PSSnapin Microsoft.SharePoint.PowerShell Get-SPWebApplication

图2-12 在传统控制台运行SharePoint命令集
但是这种添加方式只会对当前的会话有效,如果开发人员退出窗口后再次进入传统PowerShell控制台试图调用Get-SPWebApplication命令时还是会遇到同样的问题。当然我们可以直接使用SharePoint管理PowerShell控制台,但如果开发者喜欢使用传统控制台,比如在Windows 2008里传统控制台被默认PIN到了任务栏,很容易就可以点击到(当然也可以把SharePoint管理PowerShell控制台PIN到任务栏),但又不希望每次都调用Adds-PSSnapin Microsoft.SharePoint.PowerShell加载命令集库,可以修改又或者开发者使用ISE开发脚本(大多数人的选择),但也不希望每次都要手动加载SharePoint的命令集库。
此处仅以传统控制台为例,ISE环境设置相同,Windows PowerShell里可以创建被称之为用户档案的脚本,在加载的时候PowerShell运行环境会自动予以加载,我们可以把希望事先加载进来的库通过Adds-PSSnapin命令预加载进来。
要查看Windows PowerShell用户档案文件的位置,输入$profile,比如我们希望修改当前用户的用户档案文件,首先我们要查看当前用户的档案文件所在位置,调用命令$profile.CurrentUserCurrentHost,如图2-13所示。

图2-13 用档案文件地址
但是请注意,此地址有返回值但并不意味着该档案文件已经存在,要判断其是否真实存在,可以调用命令test-path $profile,如果用户首次使用,运行会返回flase,意味着档案文件不存在,如图2-14所示。

图2-14 用户档案不存在
此时,可以使用以下命令创建用户档案文件:
new-item –path $profile –itemtype file –force
此时再通过运行命令test-path $profile测试档案文件是否已经存在,由于已经创建了档案文件,在控制台窗口里就会显示运行结果“True”,因为文件已经存在,如图2-15所示。

图2-15 创建用户档案
使用以下命令调用记事本编辑档案文件:
notepad $profile
在打开的记事本窗口里输入命令:
Add-PSSnapin Microsoft.SharePoint.PowerShell
关闭PowerShell传统控制台窗口,再打开运行Get-SPWebApplication就可以直接生效了,如图2-16所示。

图2-16 加载SharePoint插件后运行
更多信息:PowerShell有多种类型的用户档案,$profile默认显示的是只适用于当前用户的档案,其他档案类型有适用于所有用户的档案等。