如何压缩PowerShell脚本以适合单行

时间:2014-03-07 19:09:32

标签: windows powershell

快速提问。我正在尝试编写以下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。

1 个答案:

答案 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命令行来覆盖它。但是,如果通过更改/绕过策略强制执行该设置,则设置将失败,并且您可能会因违反公司策略而遇到相当大的麻烦。