【发布时间】:2017-04-07 15:40:01
【问题描述】:
我正在尝试获取本地 powershell 脚本来触发 citrix 实例中的 VBS 脚本。事件应该是这样的:
Citrix 实例打开 Windows 资源管理器 ----> 键入到 Windows 资源管理器会话中的脚本的网络路径
我正在使用 Citrix 接收器安装随附的 WfIcaLib.dll (ICOSDK)。 Documentation PDF for the Citrix ICOSDK is available here
所以这是我正在使用的代码,它在 Powershell 命令行中完美运行,但是当我使用 32 位 ISE 时,它只会告诉我 DLL 已加载。我没有收到任何错误,但是当我通过 Powershell 命令行运行相同的确切命令时,Citrix 客户端从未真正打开过。
#load Citrix ICA Client SDK
[System.Reflection.Assembly]::LoadFile("C:\Program Files (x86)\Citrix\ICA Client\WfIcaLib.dll")
$ICA = New-Object WFICALib.ICAClientClass
$ICA.Address = "***.***.***.***:****"
$ICA.Application = "Windows ExplorerFED6"
$ICA.Username = "******"
$ICA.Domain = "**"
$ICA.Launch = $true
$ICA.Outputmode = [WfIcaLib.OutputMode]::OutputModeNormal
$ICA.SetProp("Password", "*********")
$ICA.TWIMode=$true
$ICA.Connect()
有什么想法吗?
编辑:已解决 - 在 32 位 ISE 下重新打开并让代码工作后,我无法运行 .ps1 文件,因为它一直默认为 64 位(即使在 32 位 powershell 版本上使用 Open With)。通过命令提示符或 32 位 powershell 控制台运行脚本都有效。
使用 Mike Garuccio 建议的任何方法都可以正常工作。我很可能最终会使用任务计划程序来运行脚本。
【问题讨论】:
-
只是想确认一下,如果使用普通的 64 位 ISE 会怎样?假设这不起作用,您可以在 ISE 中运行脚本,然后运行 $ICA |获取会员?可能有助于澄清正在创建对象并且正确的属性可用。
-
迈克,我现在必须编辑我的问题。在您发表评论之前,我让 ISE 运行脚本,但现在如果我实际运行保存的 .ps1 脚本 - 每个 $ICA.Property 都会出现运行时异常。它看起来不像在加载 DLL。我正在使用 x86(32 位)版本的 Powershell 来运行它(使用 Open With 菜单),它会抛出错误,就好像它是 64 位实例一样。 - 确实证实了,我暂停了脚本,查看了实例,虽然我选择了x86版本,但它以64位打开。
-
尝试打开 32 位控制台,然后从那里运行脚本,如果可行,我可以向您展示如何在脚本中构建运行空间并从那里运行,以便右键单击正常工作
-
cd <mydir>.\myscript.ps1在我的 32 位 powershell 中工作。所以是的,脚本在 32 位控制台中运行良好。 -
好吧,让我回顾一下我的笔记,找到关于如何为此配置运行空间的资料,很快就会有答案。
标签: powershell citrix xenapp