我试图创建一个rundeck作业,在其中指定要在该远程服务器上执行的远程服务器上的.bat文件的名称。该服务器上没有执行节点,因此我正在使用invoke-command在该(Windows)服务器上运行作业。如果在命令窗口中对文件路径进行硬编码,则可以很好地完成工作。
我想添加一个选项,以允许用户指定.bat文件的位置,以使其更容易创建新作业(我们可能必须创建许多此类作业)。
现在我的工作流程是单个命令:
Invoke-command -Authentication kerberos -ComputerName <servername> -ScriptBlock{<filename>}
可以,但是我不知道如何获得选项(${option.prog_run}
)来进行交互;我收到一个powershell错误,说我指定了错误的代码,或者它实际上没有运行任何东西。
这将“成功”,但实际上不会运行文件:
Invoke-command -Authentication kerberos -ComputerName s12zapap01880 -ScriptBlock{start-process ${option.prog_run} }
这将失败,并出现如下错误:
16:28:00 At line:1 char:123
16:28:00 + ... <servername>'-ScriptBlock{<filename.bat>' }
16:28:00 + ~
16:28:00 Unexpected token '}' in expression or statement.
这表明我可能没有正确地转义{},但是我不确定如何转义。在此处包含选项的正确方法是什么?