快速提问。我正在尝试编写以下PowerShell脚本,但我希望它适合单行:
$app = New-Object -comobject Excel.Application
$wb1 = $app.Workbooks.Open("C:\xampp\upload_files\Launchpad.xlsm")
$app.Run("Refresh")
$wb1.Close($false)
$app.Quit()
伪代码看起来像这样:
$app = New-Object -comobject Excel.Application AND $wb1 = $app.Workbooks.Open AND "C:\xampp\upload_files\Launchpad.xlsm") AND $app.Run("Refresh") AND $wb1.Close($false) AND $app.Quit()
我想要在一行上的原因是因为我想直接在Windows任务计划程序的“参数”框中插入参数。原因是由于某些原因脚本已被禁用(例如我无法调用.ps1文件......)
我知道这仍然有用,因为我已经有一个“单线程”PS脚本运行。语法是什么样的?
亲切的问候, -G。
答案 0 :(得分:5)
Powershell语句可以用分号分隔:
$app = New-Object -COM 'Excel.Application'; $wb1 = $app.Workbooks.Open("..."); ...
PowerShell可执行文件采用-Command
参数,允许您指定在PowerShell中执行的命令字符串:
powershell.exe -Command "stmnt1; stmnt2; ..."
要通过任务计划程序运行此操作,您需要将powershell.exe
放入“程序”字段,并将-Command "stmnt1; stmnt2; ..."
放入任务的“参数”字段中。
然而,正如@alroc所说:你应该验证为什么脚本执行受到限制。如果它只是默认设置,您只需通过运行Set-ExecutionPolicy RemoteSigned
来更改它,或通过将-ExecutionPolicy ByPass
添加到PowerShell命令行来覆盖它。但是,如果通过更改/绕过策略强制执行该设置,则设置将失败,并且您可能会因违反公司策略而遇到相当大的麻烦。