westlife
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору А я что ни подставлял, все работало. Вот первая создает что делать, вторая запускать с помощью нее первую созданную, это для теста. не понял зачем тут $NestedCommand, он ни где не объявляется с $PSCmdlet.ShouldProcess , и без этого все работает. Код: function Register-NewScheduledTaskWorkaround1 { [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory,ValueFromPipelineByPropertyName)] $Taskname, [Parameter(Mandatory,ValueFromPipelineByPropertyName)] $Taskpath, [Parameter(ValueFromPipelineByPropertyName)] $SystemLocalisedName = 'SYSTEM' ) $otherNewtaskParam = @{ Trigger = &{ New-ScheduledTaskTrigger -AtLogOn } Principal = &{ New-ScheduledTaskPrincipal -UserId $SystemLocalisedName -LogonType serviceaccount } Settings = &{ New-ScheduledTaskSettingsSet } } 'Enable', 'Disable' | ForEach-Object -Process { $StringToExecute = '{0}-ScheduledTask -taskname {1} -taskpath {2}' -f $_, $Taskname, $Taskpath $Action = New-ScheduledTaskAction -Execute 'powershell.exe'` -Argument " -Command cmd.exe /c echo. 'hellow' >> 'd:\2 2.txt'" if ($PSCmdlet.ShouldProcess("$NestedCommand", "Creating new task with $SystemLocalisedName rights")) { New-ScheduledTask -Action $Action @otherNewtaskParam | Register-ScheduledTask -TaskName "$($_)_$($Taskname)" -Force } } } Register-NewScheduledTaskWorkaround1 -taskname 1111 -Taskpath '\' function Register-NewScheduledTaskWorkaround2 { [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory,ValueFromPipelineByPropertyName)] $Taskname, [Parameter(Mandatory,ValueFromPipelineByPropertyName)] $Taskpath, [Parameter(ValueFromPipelineByPropertyName)] $SystemLocalisedName = 'SYSTEM' ) $otherNewtaskParam = @{ Trigger = &{ New-ScheduledTaskTrigger -AtLogOn } Principal = &{ New-ScheduledTaskPrincipal -UserId $SystemLocalisedName -LogonType serviceaccount } Settings = &{ New-ScheduledTaskSettingsSet } } 'Enable', 'Disable' | ForEach-Object -Process { $StringToExecute = '{0}-ScheduledTask -taskname {1} -taskpath {2}' -f $_, $Taskname, $Taskpath $Action = New-ScheduledTaskAction -Execute 'powershell.exe'` -Argument " -Command Start-ScheduledTask -TaskName 'Enable_1111' -TaskPath '\'" if ($PSCmdlet.ShouldProcess("$NestedCommand", "Creating new task with $SystemLocalisedName rights")) { New-ScheduledTask -Action $Action @otherNewtaskParam | Register-ScheduledTask -TaskName "$($_)_$($Taskname)" -Force } } } Register-NewScheduledTaskWorkaround2 -taskname 2222 -Taskpath '\' |
|