Bereitstellungsworkflow - Aufgabe inkl. Softwareinstallation

Post Reply
dodic
Posts: 506
Joined: 03. Feb 2012, 10:51
Location: Salzgitter
Contact:

Bereitstellungsworkflow - Aufgabe inkl. Softwareinstallation

Post by dodic » 12. Jun 2015, 12:52

Hallo,

ich bin nun seit ein paar Tagen dran einen Bereitstellungsworkflow zu erstellen der folgendes machen soll:

User bestellt Service über Katalog
Aufgabe wird erstellt und muss erledigt werden > Wait for Activity
Sobald die Aufgabe abgeschlossen ist, soll ein EmpirumSoftwarepaket installiert werden

Soweit so gut, vom Prinzip funktioniert das ganze auch schon. Die Bereitstellung des Softwarepakets haben wir nun über ein Powershellscript gelöst, welches eine XML-Datei erzeugt und auf dem Empirumserver unter ..\Log\EAI_Jobs ablegt.

Powershellscript: (Noch nicht ganz fertig aber funktioniert soweit)

Code: Select all

Param([string]$computer,[string]$mac, [string]$domain)

Function ClientMoveToGroup ($pcnummer, $pcmac, $groupid, $domain)
{
    [System.XML.XMLElement]$oXMLCommandType=$oXMLCommands.appendChild($oXMLDocument.CreateElement("ClientMoveToGroup"))
    [System.XML.XMLElement]$oXMLParameter=$oXMLCommandType.appendChild($oXMLDocument.CreateElement("parameters"))
    [System.XML.XMLElement]$oXMLGroupconf=$oXMLParameter.appendChild($oXMLDocument.CreateElement("GroupConfig"))
    [System.XML.XMLElement]$oXMLGroupconfID=$oXMLGroupconf.appendChild($oXMLDocument.CreateElement("GroupID"))
    [System.XML.XMLElement]$oXMLClientconf=$oXMLParameter.appendChild($oXMLDocument.CreateElement("ClientConfig"))
    [System.XML.XMLElement]$oXMLClientName=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("ClientName"))
    [System.XML.XMLElement]$oXMLClientDomain=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("Domain"))
    [System.XML.XMLElement]$oXMLClientMac=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("MACAddress"))
    [System.XML.XMLElement]$oXMLClientPXE=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("PXE"))
    [System.XML.XMLElement]$oXMLClientDHCP=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("DHCP"))
    
    $oXMLCommandType.setAttribute("ActionType","5")
    $oXMLCommandType.setAttribute("ActionCode","10")
    $oXMLCommandType.setAttribute("TargetType","1")

    $oXMLGroupconfID.set_innertext($groupid)
    $oXMLClientDHCP.set_innertext("1")
    $oXMLClientPXE.set_innertext("1")
    $oXMLClientMac.set_innertext($pcmac)
    $oXMLClientName.set_innertext($pcnummer)
    $oXMLClientDomain.set_innertext($domain)
      
}

Function ClientActivateSW ($pcnummer, $pcmac, $groupid, $domain)
{

     [System.XML.XMLElement]$oXMLCommandType=$oXMLCommands.appendChild($oXMLDocument.CreateElement("ClientActivateSW"))
     [System.XML.XMLElement]$oXMLParameter=$oXMLCommandType.appendChild($oXMLDocument.CreateElement("parameters"))
     [System.XML.XMLElement]$oXMLGroupconf=$oXMLParameter.appendChild($oXMLDocument.CreateElement("GroupConfig"))
     [System.XML.XMLElement]$oXMLGroupconfID=$oXMLGroupconf.appendChild($oXMLDocument.CreateElement("GroupID"))
     [System.XML.XMLElement]$oXMLClientconf=$oXMLParameter.appendChild($oXMLDocument.CreateElement("ClientConfig"))
     [System.XML.XMLElement]$oXMLClientName=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("ClientName"))
     [System.XML.XMLElement]$oXMLClientDomain=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("Domain"))
     [System.XML.XMLElement]$oXMLClientMac=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("MACAddress"))
     [System.XML.XMLElement]$oXMLClientPXE=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("PXE"))
     [System.XML.XMLElement]$oXMLClientDHCP=$oXMLClientconf.appendChild($oXMLDocument.CreateElement("DHCP"))
    
    $oXMLCommandType.setAttribute("ActionType","6")
    $oXMLCommandType.setAttribute("ActionCode","20")
    $oXMLCommandType.setAttribute("TargetType","1")

    $oXMLGroupconfID.set_innertext($groupid)
    $oXMLClientDHCP.set_innertext("1")
    $oXMLClientPXE.set_innertext("1")
    $oXMLClientMac.set_innertext($pcmac)
    $oXMLClientName.set_innertext($pcnummer)
    $oXMLClientDomain.set_innertext($domain)
      
}


[string]$GroupID = "8B67F8AC-20D8-455F-BD24-77C741D4D58F"
[integer]$PXE = 1
[integer]$DHCP = 1
[string]$File = "\\HOSTNAME\test.xml"

# Neue XML Datei erzeugen
[System.XML.XMLDocument]$oXMLDocument=New-Object System.XML.XMLDocument

# XML Root-Knoten & ersten Subknoten anlegen
[System.XML.XMLElement]$oXMLRoot=$oXMLDocument.CreateElement("EmpTransport")
[System.XML.XMLElement]$oXMLDocument.appendChild($oXMLRoot)
[System.XML.XMLElement]$oXMLCommands=$oXMLRoot.appendChild($oXMLDocument.CreateElement("commands"))

# XML Struktur erzeugen - ClientMoveToGroup
ClientMoveToGroup -pcnummer $computer -pcmac $mac -groupID $GroupID -domain "DOMAIN"
ClientActivateSW -pcnummer $computer -pcmac $mac -groupID $GroupID -domain "DOMAIN

# Attribute anlegen

# XML Datei mit Werten befüllen

# XML Datei speichern
$oXMLDocument.Save($File)
Nun würden wir gerne eine Überprüfung einbauen:

Sobald das Paket installiert wurde > Workflow wird fortgesetzt
Fehler bei der Installation > Aufgabe erstellen

Wenn hier noch wer Ideen dafür hat, wie wir den Status, ob das Paket installiert wurde oder eben ein Fehler aufgetreten ist, mit dem Workflow abfragen können, immer her damit =).

Sven_Puth hatte hier schon die Idee die Empirum DB anzusprechen und auf

Code: Select all

SELECT * FROM VIEW_SW_DISTRIBUTION_EMPIRUM
zu schauen

Post Reply

Return to “Service Catalog”

Who is online

Users browsing this forum: No registered users and 8 guests