NoseBagUK
NoseBagUK

Reputation: 365

How can I make this PowerShell script into one line

This PowerShell script works great, but I need it to be a one line script, how can I create the parameter objects inline?

$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"`

I've tried wrapping it in double quotes and with backticks and with curly braces but no luck so far.

Upvotes: 2

Views: 1357

Answers (2)

Adam Mnich
Adam Mnich

Reputation: 471

If you want to execute a subexpression wrap it in $()

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"

Upvotes: 2

G42
G42

Reputation: 10019

Subexpressions should do it. Brackets outside subexpressions not required AFAIK.

$( ) Subexpression operator

Returns the result of one or more statements. For a single result, returns a scalar. For multiple results, returns an array. 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"

Upvotes: 4

Related Questions