我们通过 Windows Server 上的 SSMS 运行作业。我们的 IT 支持人员为我们构建了一台新的虚拟服务器,其中安装了 Windows Server 2016 Datacenter 和 SSMS 15.0,并从当前服务器复制了所有作业。大多数作业步骤都是在 SQL Server 代理服务帐户下运行的 CmdExec 步骤。除了一件事外,它们都正常工作:.pl 文件与 perl(Strawberry Perl)的关联。
例如,如果我们运行“myscript.pl …”,它不会失败,但它不会通过 perl 解释器运行。作为一种解决方法,我们可以说“perl myscript.pl …”,但有许多步骤使用 perl,因此更改所有步骤会很麻烦。脚本在当前服务器上运行。
我在服务器上拥有管理员权限。对我来说,“.pl”与 Perl 相关联 - 我可以从命令行运行脚本而无需先说“perl” - 但显然不适用于服务帐户。理想情况下,我希望为所有用户设置一次。我怀疑这可以通过 GPO 来解决,但尚未找到明确适用于 WS2016 的说明。
答案1
尝试在命令提示符中使用以下命令获取文件类型关联:
assoc .pl (might give PerlScript)
ftype PerlScript
确保ftype
命令给出了完整路径perl
。
CmdExec
通过运行以下命令检查它们在环境中的值:
assoc .pl > \path\to\file
ftype PerlScript >> \path\to\file
如果值错误,请尝试通过在提升的 CmdExec 中运行来设置它们:
assoc .pl=PerlScript
ftype PerlScript=c:\path\to\perl.exe %1 %*