我是芝加哥一所大学的开发人员,在Unidata7.2上为Ellucian/Datatal同事提供支持。我们最近从Unix上的Unidata转换到Windows Server,并且有许多提取cron作业必须转换到新的操作系统。在转换过程中,我被介绍到了MS Windows Powershell脚本环境,并一直在使用它来自动化许多任务,这些任务在不同的机器上被拆分并异步执行。
我们正在实施基于MS Sharepoint构建的Ellucian Portal,为此,我们需要每晚运行一个作业,刷新HR数据中的MS Active Directory属性。为了做到这一点,我组合了一个Powershell脚本,以获取一个平面文件并更新AD。然而,Powershell脚本的美妙之处在于,您可以在本地使用.Net框架对象。多年来,我使用VB UniObjects开发了许多应用程序和实用程序,现在似乎是利用Powershell接口并将提取步骤直接构建到AD更新脚本中的绝佳机会,这样整个过程就可以作为单个集成应用程序执行。
我已经从Rocket software下载并安装了用于.Net的U2工具包,但是我遇到了一个问题,Powershell参考和实例化语法与任何Visual Studio语言都不同。尽管我已经取得了一些进展,并且能够与U2.Data.Client命名空间建立U2 ADO连接,但我仍然在正确实例化本机UniObjects U2.Data.Client.UO对象时遇到问题。
我确信这只是一个正确引用这些库的简单问题,但我以前从未实际使用过.Net框架,而且我似乎找不到任何在Powershell中使用U2 .Net库的权威示例。这个论坛似乎是一个很好的资源,我所取得的进步要归功于我在这里找到的帖子。如果任何人对U2和Powershell都有任何想法或专业知识,我很想听听你对如何创造奇迹有什么意见。
发布于 2012-11-13 01:35:35
感谢您提出这个问题。你可以很容易地从微软PowerShell调用U2 Toolkit for .NET (U2NETDK)。请参阅随附的屏幕截图。我做了以下工作:
用于assembly
Connection Object
ADO.NET命令( SELECT FIRST_NAME,SURNAME FROM MEMBERS)
如果您想要使用UO.NET功能,并且想要使用read file、UniCommand、SelectList,那么请参考U2.Data.Client.UO.UniFile、U2.Data.Client.UO.UniCommand等。
我希望这个例子也能对其他U2 .NET用户有所帮助。

请参阅此示例:http://blogs.technet.com/b/threekings/archive/2008/07/18/ado-net-in-powershell-update-sql-data-example-sample.aspx
发布于 2012-11-19 11:02:09
感谢您试用U2NETDK的ADO.NET和windows PowerShell。对于本地访问( Uniobjects API),您不需要UODOTNET.DLL。我们在U2NETDK中嵌入了Uniobjects API。因此,您将引用U2.Data.Client和U2.Data.Client.UO名称空间。请参见下面的脚本和屏幕截图。
Add-Type -Path "C:\Program Files (x86)\Rocket Software\U2 Toolkit for .NET\U2 Database Provider\bin\.NETFramework\v2.0\U2.Data.Client.dll"
$Connection = New-Object U2.Data.Client.U2Connection
$Connection.ConnectionString = "Database=XDEMO;User ID=administrator;Password=pass;Server=9.72.199.235;Persist Security Info=True;ServerType=universe;AccessMode=Native"
$Connection.Open()
$Session = $Connection.UniSession
$UniSelectList =$Session.CreateUniSelectList(2);
$UniFile = $Session.CreateUniFile("PRODUCTS");
$UniSelectList.Select($UniFile);
while (!$UniSelectList.LastRecordRead)
{
$sRecID = $UniSelectList.Next();
write-host $sRecID
}
$Connection.Close()

https://stackoverflow.com/questions/13347631
复制相似问题