在现代企业中,数据的集中管理和访问是提高工作效率和决策质量的关键。本文将介绍如何使用WindowsPowerShell和Microsoft Office SharePoint Server 2007来集成来自不同设备(如OCR设备或成像器)的数据,这些设备连接到运行Windows Server 2003的服务器上。通过集成,可以将分布在多个设备上的数据通过一个集中的平台进行展示,任何配备有网络连接和Web浏览器的工作站都可以访问这个平台。
使用了Windows PowerShell,这是微软的可扩展命令行接口shell,以及一种与.NET框架集成的脚本语言,可以轻松地将信息插入到各种.NET可访问的基础设施中,如SQL Server、Exchange Server,以及本文案例中的Office 2007系统。将处理的数据形式是二进制图像,以及提供这些图像注释数据的XML文件。
Microsoft Office SharePoint Server 2007和Windows SharePoint Services 3.0帮助组织为每个员工提供智能能力,允许他们共享、管理和重用信息,以便团队更好地做出决策。在大多数组织中,这些信息以商业文档的形式存在,如Word文件或Excel电子表格。然而,组织数据也可以以图像、XML文件等非常规业务文档的形式存在。
Office SharePoint Server 2007平台提供了对发布的Microsoft Office数据文件的Web和程序访问,如Word文档、Excel电子表格等,使得数据可以被程序重用,并且可以轻松开发基于Web的仪表板,这些仪表板可以整合关键绩效指标、小部件和发布的Office数据文件。
要使用以下代码,必须在同一台机器上安装有PowerShell1.0或2.0(可从Microsoft网站下载),并且该机器上安装了Microsoft Office SharePoint Server 2007。
此外,以下操作是必要的,以便通过PowerShell与SharePoint对象模型进行交互:
[System.Reflection.Assembly]::Load("Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c");
将多个文件服务器映射为网络驱动器到SharePoint服务器,从而获得了图像文件以及与每个图像文件关联的XML文件的访问权限。为了本文的目的,图像文件是信息的大型地图。
下面的代码片段(每行以分号结尾)将用于一个foreach循环中,以实现以下目标:
使用了以下代码来解析XML文件(稍后将内容导入到Microsoft Office SharePoint Services团队网站):
[xml] $myxmldoc = get-content image123-header.xml;
$sitetitle = $myxmldoc.tree.imagecategory.title;
$maptype = $myxmldoc.tree.imagecategory.maptype;
使用了以下函数将XML数据插入到自定义列表中,该列表将用于记账目的:
$site = new-object microsoft.sharepoint.spsite("http://site-to-upload-to.org");
$web = $site.Openweb();
$entitychange = $web.lists["MAPS"].Items.Add();
$entitychange["Title"] = $sitetitle;
$entitychange["Location"] ="http://site-to-upload-to.org/sites/"+ $sitetitle;
$entitychange["Map Type"] = $maptype;
$entitychange.Update();
$site.Dispose();
要在“sites”层次结构下创建一个新的团队网站,只需要以下操作:
$site = new-object microsoft.sharepoint.spsite("http://site-to-upload-to.org/sites/");
$site.Allwebs.Add("sites/"+$sitetitle, $sitetitle, $sitetitle, [int]1033, "STS", "", "");
$site.Dispose();
要在最近创建的团队网站下创建一个新的文档库(一种类型的Web文件夹),也称为列表,请按照以下步骤操作:
$site = new-object microsoft.sharepoint.spsite("http://site-to-upload-to.org/sites/" +$sitetitle);
$website = $site.OpenWeb();
$listtemplate = $website.ListTemplates["Document Library"];
$listID = $website.Lists.Add("Map", "", $listtemplate);
$list = $website.Lists.GetList($listID, $true);
$list.Title = "Map";
$list.OnQuickLaunch = $true;
$list.Update();
要在自定义列表中添加一个带有默认值的特殊自定义字段,请按照以下步骤操作(注意使用XML创建自定义字段;否则自定义字段的引入会比较困难):
$list.Fields.AddFieldAsXml("");
$list.Update();
$list.Fields["Annotation Type"].DefaultValue = "Annotated";
$list.Fields["Annotation Type"].Update();
最后,将从本地映射的网络驱动器(或本地文件夹)添加文件到最近生成的文档库:
$webclient = new-object System.Net.WebClient;
$webclient.Credentials = [System.Net.CredentialCache]::DefaultCredentials;
$webclient.UploadFile($uristring, "PUT", $filepath);
$webclient.Dispose();