【问题标题】:Using the U2 toolkit for .Net / UniObjects in Windows Powershell?在 Windows Powershell 中使用用于 .Net / UniObjects 的 U2 工具包?
【发布时间】:2012-11-12 16:36:35
【问题描述】:

我是芝加哥一所大学的开发人员,在 Unidata 7.2 上支持 Ellucian/Datatal 同事。我们最近从 Unix 上的 Unidata 转换为 Windows Server,并且有许多必须转换为新操作系统的提取 cron 作业。在那次转换期间,我被介绍到 MS Windows Powershell 脚本环境,并一直在使用它来自动化许多程序上碎片化的任务,这些任务被拆分并在不同的机器上异步执行。

我们正在实施基于 MS Sharepoint 的 Ellucian 门户,对于该任务,我们需要运行一个夜间作业,从我们的 HR 数据中刷新 MS Active Directory 属性。为了做到这一点,我整理了一个 Powershell 脚本来获取一个平面文件并更新 AD。然而,Powershell 脚本的美妙之处在于您可以在本地使用 .Net 框架对象。多年来,我使用 VB UniObjects 开发了许多应用程序和实用程序,这似乎是利用 Powershell 界面并将提取步骤直接构建到 AD 更新脚本中的绝佳机会,因此整个过程可以作为单个集成执行申请。

我已经从 Rocket 软件下载并安装了适用于 .Net 的 U2 工具包,但我遇到了一个障碍,即 Powershell 引用和实例化语法与任何 Visual Studio 语言都不同。虽然我已经取得了一些进展,并且能够与 U2.Data.Client 命名空间建立 U2 ADO 连接,但我仍然无法正确实例化 Native UniObjects U2.Data.Client.UO 对象。

我确信正确引用库只是一个简单的问题,但我之前从未真正使用过 .Net 框架,而且我似乎找不到任何使用 U2 .Net 的权威示例Powershell 中的库。这个论坛似乎是一个很好的资源,我取得的进展归功于我在这里找到的帖子。如果有人对 U2 和 Powershell 有任何想法或专业知识,我很想听听您是否对如何实现这一奇迹有意见。

【问题讨论】:

    标签: powershell u2 unidata uniobjects u2netdk


    【解决方案1】:

    感谢您提出这个问题。 您可以从 Windows PowerShell 非常轻松地调用 U2 Toolkit for .NET (U2NETDK)。 请参阅随附的屏幕截图。 我做了以下事情:

    1. 为 .NET 安装 U2 工具包
    2. 参考已安装的 .NET U2NETDK 程序集
    3. 创建连接对象
    4. 创建命令对象
    5. 打开连接
    6. 执行 ADO.NET 命令(SELECT FIRST_NAME, SURNAME FROM MEMBERS)
    7. 获取数据。在 PowerShell 上写入数据
    8. 关闭连接。

    如果你想使用 UO.NET 能力并且你想使用读取文件、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

    【讨论】:

    • Rajan - 感谢您的回复。我能够测试 ADO 连接,它看起来像预期的那样连接,尽管我在使用 VSG(另一个主题)准备数据库时遇到问题,所以我还不能检索数据。但是,我仍然无法建立引用或使用 UniObjects 本机模式对象。 UniObjects Session 类的帮助显示语法:us = UniObjects.OpenSession("localhost","xxx","yyy","demo","udcs"); - 但我似乎无法找到引用 UniObjects 库和 .OpenSession() 方法的正确方法。有什么想法吗?
    【解决方案2】:

    感谢您试用 U2NETDK 的 ADO.NET 和 windows PowerShell。 对于 Native Access (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()
    

    【讨论】:

      猜你喜欢
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多