这个PowerShell脚本运行良好,但我需要它是一个单行脚本,如何内联创建参数对象?
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}'
$trigger = New-ScheduledTaskTrigger -Daily -At 9am
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Reset IIS" -Description "Daily Reset IIS"
e.g。
Register-ScheduledTask -Action `New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}'` -Trigger `New-ScheduledTaskTrigger -Daily -At 9am -TaskName "Reset IIS" -Description "Daily Reset IIS"`
我尝试用双引号括起来,用反引号和花括号但到目前为止没有运气。
答案 0 :(得分:4)
Subexpressions应该这样做。子表达式以外的括号不需要AFAIK。
$()Subexpression运算符
返回一个或多个语句的结果。对于单个结果, 返回一个标量。对于多个结果,返回一个数组。 sauce: about_Operators
Register-ScheduledTask -Action $(New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}') -Trigger $(New-ScheduledTaskTrigger -Daily -At 9am)-TaskName "Reset IIS" -Description "Daily Reset IIS"
答案 1 :(得分:2)
如果要执行子表达式将其包装在$()
中Register-ScheduledTask -Action $(New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}') -Trigger $(New-ScheduledTaskTrigger -Daily -At 9am) -TaskName "Reset IIS" -Description "Daily Reset IIS"
答案 2 :(得分:0)
我希望脚本秘密运行。 我使用了类似下面的代码,但是它给出了一个错误。
Register-ScheduledTask -Action $(New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {echo (Get-date)>> C:\log.txt } -executionpolicy bypass -NoExit -noprofile -WindowStyle Hidden') -Trigger $(New-ScheduledTaskTrigger -Daily -At 05:00pm) -TaskName "Gorev" -RunLevel Highest -Force
我可以以秘密方式运行脚本吗?
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.17134.407
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.407
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1