2017-03-27 3 views
0

Diese Frage ist für alle, die Octopus Deploy verwenden, um geplante Aufgaben auszuführen.Octopus Deploy Windows geplante Aufgabe

https://library.octopusdeploy.com/step-template/actiontemplate-windows-scheduled-task-create

Hat jemand begegnet Situation, in der Sie angeben müssen "Start in (optional):" Parameter in der geplanten Aufgabe?

Ich frage mich, ob dies mit Octopus Deploy möglich ist oder ob es irgendwelche Arbeit gibt?

+0

wollte sagen „Start in (optional):“ – ProgSky

+0

Octopus Antwort: Ich hatte diese Frage nicht zu gefragt Vor langer Zeit wurden die Schrittvorlagen leider meist von der Community erstellt und verwaltet. Es sieht so aus, als wäre es die beste Option, eine Kopie der Schrittvorlage zu erstellen und/script in einem eigenen Abschnitt hinzuzufügen, um das Feld "Start in" zu bearbeiten. Leider gibt es momentan keine anderen Optionen. Wir sind sehr auf den Beitrag der Gemeinschaft mit unseren Schrittvorlagen angewiesen. Wenn Sie dies tun, würden wir gerne eine PR mit Ihrer Änderung sehen. Der folgende Link enthält Informationen darüber, wie das Senden an unsere Bibliothek funktioniert: https://github.com/OctopusDeploy/Library – ProgSky

Antwort

1

Octopus Deploy Community-Schritte sind nur Powershell-Skripte mit Variablen. Sie können die Powershell bearbeiten, um eine beliebige Variable für den Pfad "Start in" einzurichten und diese an die geplante Aufgabe zu übergeben. Ich kann dir ein Beispiel geben, dass du eins brauchst.

aktualisiert

Nach Genauigkeit für die Aufgabe am Posh Skript suchen, denke ich, eine bessere Option einen Parameter für die XML-Datei hinzuzufügen wäre, dass die Task-Parameter und stellen Sie legt fest, dass in Ihrem Octopus Einsatz Schritte. Das gibt Ihnen die größte Flexibilität, falls Sie neben dem Parameter "Start in" weitere Parameter angeben müssen.

Update 2

Also schrieb ich einen benutzerdefinierten Schritt zu tun, was man wollte, dann an der Gemeinschaft Futter sah, mich dumm. Es gibt bereits eine Stemp-Vorlage zum Erstellen einer geplanten Aufgabe aus einer XML-Datei. Mit dem XML können Sie das Arbeitsverzeichnis festlegen. Die Schrittvorlage heißt "Geplante Aufgaben aus XML erstellen" und Sie finden sie unter http://library.octopusdeploy.com/step-templates/26c779af-4cce-447e-98bb-4741c25e0b3c/actiontemplate-create-scheduled-tasks-from-xml.

Außerdem ist hier, wo ich mit dem benutzerdefinierten Schritt gehen wurde, es ist nur Powershell:

$ErrorActionPreference = "Stop"; 
Set-StrictMode -Version "Latest"; 

function New-ScheduledTask { 
    param (
     [Parameter(Mandatory = $true)][hashtable] $octopusParameters 
    ) 

    $arguments = @{ 
     TaskName = $octopusParameters['TaskName'] 
     User = $octopusParameters['RunAsUser'] 
    } 

    if ($octopusParameters['RunAsPassword']) { 
     $arguments.Password = $runAsPassword 
    } 

    if ($octopusParameters.ContainsKey('RunWithElevatedPermissions')) { 
     if ([boolean]::Parse($octopusParameters['RunWithElevatedPermissions'])) { 
      $arguments.RunLevel = 'Highest' 
     } 
    } 

    switch ($octopusParameters['Schedule']) { 
     'Once' { 
      $triggerArguments.Once = $true 
      $triggerArguments.At = $runAt 
     } 
     'Daily' { 
      $triggerArguments.Daily = $true 
      $triggerArguments.At = $runAt 

      if ($interval) { 
       $triggerArguments.DaysInterval = $octopusParameters['Interval'] 
      } 
     } 
     'Weekly' { 
      $triggerArguments.Weekly = $true 
      $triggerArguments.At = $runAt 

      if ($interval) { 
       $triggerArguments.WeeksInterval = $octopusParameters['Interval'] 
      } 
     } 
     'Startup' { 
      $triggerArguments.AtStartup = $true 
     } 
     'Logon' { 
      $triggerArguments.AtLogOn = $true 
     } 
    } 

    $actionArguments = @{ 
     Execute = $octopusParameters['Executable'] 
     Argument = $octopusParameters['Arguments'] 
     WorkingDirectory = $octopusParameters['WorkingDirectory'] 
    } 
    $arguments.Action = New-ScheduledTaskAction @actionArguments 

    $triggerArguments = @{ 
     TaskName = $taskName 
     User = $runAsUser 
    } 
    $arguments.Trigger = New-ScheduledTaskTrigger @triggerArguments 

    Write-Output "Creating Scheduled Task - $taskName" 

    Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction:SilentlyContinue 
    Register-ScheduledTask @arguments | Out-Null 

    Write-Output "Successfully Created $taskName" 
} 

# only execute the step if it's called from octopus deploy, 
# and skip it if we're runnning inside a Pester test 
if (Test-Path -Path "Variable:octopusParameters") { 
    New-ScheduledTask $octopusParameters 
} 
+0

Danke Boyan, Beispiel würde helfen. – ProgSky

+0

Laufen Sie auf Windows 2012 oder 2016? Powershell 3 verfügt über eine neue API, mit der Aufgaben einfacher erstellt werden können. V3 ist jedoch standardmäßig nur in Windows 8, 10, 2012 und 2016 verfügbar. –

+0

Ich laufe auf Windows 2012. – ProgSky

Verwandte Themen