使用 Control-M 运行 PowerShell 脚本从 Beyond Compare 复制文件

Using Control-M to run a PowerShell Script to Copy Files from Beyond Compare

我目前有一个 PowerShell 脚本调用 Beyond Compare v3 将文件从安全的 SFTP 站点复制到我的网络。每当我 运行 PS GUI 和 PS 控制台中的 PowerShell 脚本时,它都工作得很好。它能够连接到 SFTP 站点和我的网络,并将文件复制过来。

我在 Control-M 中创建了一个作业,它调用传递了 2 个参数的 PowerShell 脚本。当我 运行 作业时,它不会复制文件并且 Beyond Compare 日志显示:

Connecting to XXX.XX.XX.XXX

Server key [ssh-rsa XXXX XX:XX.....]

Connection failed: Attempted to open a "Unknown Host Key" dialog when running silently

Attempted to open a "Unknown Host Key" dialog when running silently

Load comparison: "My Location Path" <->

Fatal Scripting Error: Unable to load base folder

就像我说的,当我 运行 它通过 PowerShell 本身时,它能够毫无问题地连接并复制所有文件,所以我的 Beyond Compare 脚本文件没有问题。我认为这是 Control-M 本身的错误。

第一次在 Beyond Compare 中连接到 SFTP 服务器时,它会提示您接受带有复选框的服务器的主机密钥 "Add host key to trusted cache"。

错误消息表明通过 Control-M 的脚本 运行 在其受信任列表中没有 SFTP 主机密钥。因为它是 运行ning 作为脚本,它无法显示接受密钥的 GUI 提示,脚本失败。

SFTP 服务器的受信任缓存基于每个用户存储在“%appdata%\scooter software\beyond compare 3\”中。如果 Control-M 运行ning Beyond Compare 作为不同的用户帐户,它将无法访问您帐户的受信任列表并生成错误。您可以使用同一用户通过 Control-M 运行 Beyond Compare 脚本,或者将设置复制到 Control-M 作业的用户帐户。

如果您运行将 Beyond Compare 脚本作为您交互式使用的同一用户帐户,但非交互式 运行 无权访问,有时也会显示此错误您的用户资料。这方面的一个例子是 运行ning Beyond Compare 脚本作为 Windows Server 2012 上的计划任务,因为它有一个 bug that loads the default profile instead of the user profile。 运行 以交互方式连接一次以接受密钥后便携式安装的任务是 Windows Server 2012 问题的解决方法。