2012-11-12 37 views
1

我是芝加哥一所大學的開發人員,他在Unidata 7.2上支持Ellucian/Datatal同事。我們最近從Unix上的Unidata轉換到Windows Server,並且有許多提取cron作業必須轉換爲新的操作系統。在這個轉換過程中,我被引入了MS Windows Powershell腳本環境,並且已經使用它來自動執行許多已經被程序化分割的任務,其中任務在不同的機器上被異步分割和執行。在Windows Powershell中爲.Net/UniObjects使用U2工具包?

我們正在實施建立在MS Sharepoint上的Ellucian Portal,爲此我們需要運行夜間工作,從我們的HR數據中刷新MS Active Directory屬性。爲了做到這一點,我把一個Powershell腳本放在一起,以獲得一個平面文件並更新AD。但是,Powershell腳本的美妙之處在於,你可以使用.Net框架對象本身工作。多年來,我使用VB UniObjects開發了許多應用程序和實用程序,這似乎是利用Powershell界面並將提取步驟直接構建到AD更新腳本中的完美機會,因此整個過程可以作爲單個集成應用。

我已經從Rocket軟件下載並安裝了用於.Net的U2工具包,但我遇到了一個障礙,因爲Powershell引用和實例化語法與任何Visual Studio語言都不同。儘管我已經能夠取得一些進展,並且能夠與U2.Data.Client命名空間建立U2 ADO連接,但我仍然無法正確實例化本機UniObjects U2.Data.Client.UO對象。我確信它只是一個正確引用庫的簡單問題,但我從來沒有真正使用過.Net框架,而且我似乎也找不到使用U2的任何權威示例。 PowerShell中的網絡庫。這個論壇似乎是一個很好的資源,我已經取得的進展是由於我在這裏找到的帖子。如果任何人在U2和Powershell中都有任何想法或專業知識,我很樂意聽到你是否對如何讓魔法發生有意見。

回答

1

謝謝你提出這個問題。 您可以從Windows PowerShell輕鬆調用U2 Toolkit for .NET(U2NETDK)。 查看隨附的屏幕截圖。 我做了以下內容:

  1. U2安裝工具包的.NET
  2. 請參閱安裝.NET U2NETDK裝配
  3. 創建連接對象
  4. 創建Command對象
  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用戶。

enter image description here

見這個例子: http://blogs.technet.com/b/threekings/archive/2008/07/18/ado-net-in-powershell-update-sql-data-example-sample.aspx

+0

拉詹 - 感謝您的答覆。我能夠測試ADO連接,並且它看起來像預期的那樣連接,雖然我在使用VSG(另一個主題)準備數據庫時遇到問題,所以我還無法檢索數據。但是,我仍然無法建立引用或使用UniObjects本機模式對象。對UniObjects Session類的幫助顯示語法:us = UniObjects.OpenSession(「localhost」,「xxx」,「yyy」,「demo」,「udcs」); - 但我似乎無法找到引用UniObjects庫和.OpenSession()方法的正確方法。有任何想法嗎? –

0

感謝您嘗試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() 

enter image description here

相關問題