【发布时间】:2015-04-19 20:43:00
【问题描述】:
我有一个第 3 方应用程序,到目前为止,它使用插件与 quickbooks 通信。该插件不再适用于最新版本的 Windows 操作系统,因此我将使用 PowerShell 脚本替换它。该插件将实例化 QBXMLRP.RequestProcessor com 对象,然后打开一个连接并开始与 QuickBooks 的会话,处理来自我的应用程序的各种请求,然后关闭并断开与 QuickBooks 的连接。当连接打开时,QuickBooks 提供的票证用于处理来自我的应用的任意数量的请求。
使用 PowerShell,我执行命令行提示符以“启动”PowerShell 并运行 PowerShell .ps1 脚本文件。与插件一样,PS 脚本实例化 com 对象,打开 qb 连接,开始 qb 会话,发送 qb 请求,结束 qb 会话,关闭 qb 连接。
这很好用,除了与插件不同的是,我无法在与 QuickBooks 的单个打开会话期间从我的应用程序发送多个请求。一旦我发出命令行提示符,PS 脚本就会执行此操作,PS 退出并且 com 对象丢失。他们无论如何都要保留 qb com 对象的实时实例并在随后的 PowerShell 会话中重用它...
我的应用程序发出命令行提示符以运行 PowerShell 以开始 qb 会话...
(.ps1 script)
$myqbxmrlp = New-Object -com QBXMLRP.RequestProcessor
$myqbxmrlp.OpenConnection(...)
$ticket = $myqbxmrlp.BeginSession(....)
$ticket | Export-CliXml $ticket (or set-content)
?? preserve the live $myqbxmrlp com object ??
我的应用发出命令行调用来打开 PS Session 2 向 qb 发送请求...
(.ps1 script)
$myqbxmrlp = ?? get the live com object back ??
$ticket = Import-CliXml $ticket (or get-content)
$myqbxmrlp.ProcessRequest($ticket,....)
使用另一个请求打开 PS Session 3 的命令行调用...
命令行调用以使用另一个请求打开 PS 会话 4...
命令行调用打开 PS Session 5 并结束 qb 会话并关闭 qb 连接...
(.ps1 script)
$myqbxmrlp = ?? get the com object back ??
$ticket = Import-CliXml $ticket (or get-content)
myqbxmrlp.EndSession($ticket,....)
$myqbxmrlp.CloseConnection
还有其他方法可以使用 powershell 来解决这个问题吗?
【问题讨论】:
标签: powershell quickbooks