0

我正在尝试获取本地 powershell 脚本来触发 citrix 实例中的 VBS 脚本。事件应该是这样的:

Citrix 实例打开 Windows 资源管理器 ----> 输入到 Windows 资源管理器会话中的脚本的网络路径

我正在使用 Citrix 接收器安装附带的 WfIcaLib.dll (ICOSDK)。Citrix ICOSDK 的文档 PDF 可在此处获得

所以这是我正在使用的代码,它在 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 版本上使用打开方式)。通过命令提示符或 32 位 powershell 控制台运行脚本都有效。

使用 Mike Garuccio 建议的任何方法都可以。我很可能最终会使用任务计划程序来运行脚本。

4

1 回答 1

1

看起来问题出在版本控制问题上,您可以使用 start-job 来处理(原本打算使用运行空间来解决这个问题,但代码更多,没有真正的好处)。这将启动在 32 位 powershell 下运行代码的作业,它仍应在屏幕上放置任何 GUI 元素或弹出窗口,但如果您稍后需要从脚本中获取任何数据,则需要接收该作业。代码如下所示。

$SB = {
[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()
}

Start-Job -ScriptBlock $SB -RunAs32
get-job | Receive-Job

或者,您也可以使用简单的 .bat 文件作为启动器,例如C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file yourscript.ps1

或者,如果您需要将所有内容都包装在 powershell 中并且工作不起作用,您可以使用解决方案Here基本上做同样的事情,但在 powershell 中(删除他们使用的 if 语句,只需使用其中包含的东西,如下所示,您需要对配置文件和交互式设置进行任何更改。)

&"$env:windir\syswow64\windowspowershell\v1.0\powershell.exe" -noninteractive -noprofile -file "C:\Path o\script.ps1" -executionpolicy bypass

希望其中一个适合你!

于 2016-11-23T19:15:42.157 回答