Object Model的代码如下:
using (SPSite osite = new SPSite("http://ServerName:20000/")) { //Show the SPWeb's title before we move on Console.WriteLine(osite.RootWeb.Title); using (SPWeb oweb = osite.RootWeb) { //Use group login name to find the group SPUser ouser = oweb.AllUsers["domain\\groupname"]; Console.WriteLine(ouser.Name); //Change the group's display name ouser.Name = "domain\\groupdisplayname"; //Update the group ouser.Update(); Console.WriteLine(ouser.Name); } }
这段代码的功能是查找登录名为domain\groupname的用户, 把这个用户的显示名修改为groupdisplayname.
代码编译执行后, 该用户使用domain\groupname登录站点, 但是他的显示名称却被改成了groupdisplayname.
假设你也和我一样, 对powershell了解的少之又少. 别怕, 让我们一步步地把这里的代码转换为powershell的脚本吧.
第一步
============
如果你打开了PowerShell的命令行窗口, 脑子里却一片空白, 那么应该如何开始呢?
你可以使用Get-Command命令来找一下你可以使用的命令. 注意, PowerShell在命令里似乎不怎么用缩写. 所以你可以用你所知道的关键字来进行搜索.
从上面的代码可以看到, 我们需要先创建一个SPSite对象, 那就用"SPSite"来搜索吧. 输入:
get-command *spsite*
结果如下:
简单瞄一眼, 觉得get-spsite比较靠谱, 继续.
第二步
===========
PowerShell命令的字符串参数是要用引号括起来来的. 输入下面的命令:
$oSite=Get-SPSite "http://servername"
然后输出其RootWeb的Title属性, 以确认所操作的对象.
可以看到Title属性的值是"Publishing Portal".
第三步
===========
如果我们对SPWeb不熟悉, 想看看它都有什么属性怎么办? 命令行窗口可不像Visual Studio, 打个"."后自动列出属性和方法. 我们需要使用命令来查看对象的属性和方法. 我们需要的属性是AllUsers, 就用"User"来搜索一下吧. 输入下面的命令:
$oWeb|get-member *user*
结果如下:
找到了AllUser属性之后, 我们就可以使用它了.
为确保万无一失, 我们还是看一眼$oGroup的属性吧.
嗯, 放心大胆的改吧.
第四步
============
输入命令如下:
$oGroup.DisplayName="domain\groupdisplayname"
结果如图:
第五步
============
了解SharePoint Object Model的人都知道, 这个属性的修改如果要固定下来, 需要调用一次Update方法才能写回到数据库中, 永久生效.
从这个调用中可以看到, PowerShell跟C#还是有点像的, 比较好用. 呵呵.
大功告成!
另外
===========
你还可以把上面的命令写入一个后缀名为ps1的文本文件中, 然后在PowerShell中运行这个脚本文件.
$oSite=Get-SPSite "http://servername"
$oWeb=$oSite.OpenWeb()
$oGroup=$oWeb.AllUsers["olddomain\oldname"]
$oGroup.DisplayName="newdomain\funnyname"
$oGroup.Update()
$oGroup
结果如图:
脚本比使用C#编写的程序在使用上要方便很多. 这里提到的技巧还是很有用的.
参考资料:
Introduction to Windows PowerShell Get-Member
http://www.computerperformance.co.uk/powershell/powershell_get_member.htm
Running Windows PowerShell Scripts
http://technet.microsoft.com/en-us/library/ee176949.aspx
PowerShell入门
http://www.cnblogs.com/awpatp/archive/2010/07/20/1781577.html