zoukankan      html  css  js  c++  java
  • 使用SharePoint 2010的PowerShell完成Object Model编程才能完成的功能的一个实例

    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*

    结果如下:

    image

    简单瞄一眼, 觉得get-spsite比较靠谱, 继续.

    第二步

    ===========

    PowerShell命令的字符串参数是要用引号括起来来的. 输入下面的命令:

    $oSite=Get-SPSite "http://servername"

    然后输出其RootWeb的Title属性, 以确认所操作的对象.

    image

    可以看到Title属性的值是"Publishing Portal".

    第三步

    ===========

    如果我们对SPWeb不熟悉, 想看看它都有什么属性怎么办? 命令行窗口可不像Visual Studio, 打个"."后自动列出属性和方法. 我们需要使用命令来查看对象的属性和方法. 我们需要的属性是AllUsers, 就用"User"来搜索一下吧. 输入下面的命令:

    $oWeb|get-member *user*

    结果如下:

    image

    找到了AllUser属性之后, 我们就可以使用它了.

    image

    为确保万无一失, 我们还是看一眼$oGroup的属性吧.

    image

    嗯, 放心大胆的改吧.

    第四步

    ============

    输入命令如下:

    $oGroup.DisplayName="domain\groupdisplayname"

    结果如图:

    image

    第五步

    ============

    了解SharePoint Object Model的人都知道, 这个属性的修改如果要固定下来, 需要调用一次Update方法才能写回到数据库中, 永久生效.

    从这个调用中可以看到, PowerShell跟C#还是有点像的, 比较好用. 呵呵.

    image

    大功告成!

    另外

    ===========

    你还可以把上面的命令写入一个后缀名为ps1的文本文件中, 然后在PowerShell中运行这个脚本文件.

    $oSite=Get-SPSite "http://servername"
    $oWeb=$oSite.OpenWeb()
    $oGroup=$oWeb.AllUsers["olddomain\oldname"]
    $oGroup.DisplayName="newdomain\funnyname"
    $oGroup.Update()
    $oGroup

    结果如图:

    image

    脚本比使用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

  • 相关阅读:
    设计阶段如何画用例视图(UseCase View)
    如何进行博客中的摘要设计
    浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)<转>
    设计漂亮的样式表是一门艺术<轉>
    推荐几个Net开源项目
    使用Ajax和Jquery实现GridView的展开、合并
    36个引人注目JQuery导航菜单
    Nunit中如何进行事务性单元测试
    推荐Jquery 40个漂亮的导航菜单设计
    Highcharts:高交互性的javascript图表类库
  • 原文地址:https://www.cnblogs.com/awpatp/p/1847012.html
Copyright © 2011-2022 走看看