Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Immer wiederkehrende Befehle in einer XML oder einem Object speicher

Frage Entwicklung Batch & Shell

Mitglied: mayho33

mayho33 (Level 2) - Jetzt verbinden

10.01.2014, aktualisiert 26.01.2014, 1670 Aufrufe, 6 Kommentare, 3 Danke

Hallo Community!

Ich stehe wieder mal vor einem "unlösbaren" Problem und hoffe auf eure Hilfe!

Seit kurzem beschäftige ich mich mit Powershell und frage mich ob man immer wiederkehrende Commandos nicht etwa in einer XML speicher kann,

(z.B. sowas: $ar = get-process -name $KillDelayed | %{ $_.closemainwindow() } -ErrorAction SilentlyContinue ; $myError = $null ; $myError = $?
oder ein Command für Logging, usw...)

und dieses Commando aus der xml zur Laufzeit ausliest und ausführt.

Warum ich das tun möchte: Speziell beim Logging sehe ich, dass ich die Commands sehr oft brauche in verschiedenen eigenen Cmdlets. Will ich also eine Änderung machen, muss ich das in allen cmdlets tun in denen ich z.B. in ein Logfile schreibe.
Nun dachte ich, dass dass Command an einem zentralen Ort gespeichert doch viel einfacher wartbar wäre und ich im cmdlet nichts ändern muss.

Hat jemand eine Idee wie ich das umsetzen könnte? Stehe voll am Schlauch, nicht mal ein Ansatz.

Danke für eure Hilfe!

Mayho

Mitglied: colinardo
10.01.2014, aktualisiert um 18:21 Uhr
Hallo Mayho,
du kannst dir die Funktionen im Powerhell-Profil hinterlegen, dann hast du sie in jedem Powershell-Script zur Verfügung stehen:
http://www.windowspro.de/wolfgang-sommergut/powershell-konfigurieren-mi ...
darin kannst du dir dann z.B. eine Funktion zum Logging etc. anlegen
Function Log($text, $file){ 
... 
... 
}
Grüße Uwe
Bitte warten ..
Mitglied: mayho33
10.01.2014 um 18:21 Uhr
Hi colinardo!

Danke für deine Antwort!

Leider ist das nicht ganz das was ich wollte oder ich habe es falsch verstanden.

Eine etwas genauere Erklärung:

Wir basteln gerade an der Umsetzung eines InstallScripts in Powershell für SCCM2012. Das ganze soll modular aufgebaut sein, sprich, für jede Function ein eigenes cmdlet. Das ganze Set wird dann per MSI auf dem Zielclient hier installiert: "C:\Windows\System32\WindowsPowerShell\v1.0\Modules" damit die Functions global verfügbar sind.

Es werden also in etwa 15 cmdlets sein die via einem "Doing.ps1" angesprochen werden. jedes cmdlet schreibt über ein Write-Log-cmdlet ins Logfile.
Da das logfile natürlich schön und gleichmäßig formatiert sein soll kommen einige "Aufrufe" zusammen. Und das aus fast allen cmdlets die wir erstellen. Sollte also eine Änderung in der Formatierung des LogFiles anstehen, müssten wir fast alle cmdlets angreifen und diese Änderung nachziehen.

Meine Idee war also eine XML in der die Command für das Logging hinterlegt sind (z.B. WriteLog -CreationSteps Create, WriteLog -CreationSteps Progress -LogText "irgendwas", WriteLog -CreationSteps Finish, usw....)

(Ich dachte da mehr an Objects usw., sprich das XML auslesen in ein Object speichern, sodass es nicht mehr reiner Text ist sondern die Parameter wieder als solche erkannt werden. Write-Log -CreationSteps......)

das wird mitunter 10-12 mal mit jeweils anderen Parametern oder Strings gemacht je nach Vorraussetzung und cmdlet.
Mühsam wenn z.B. zwischen den einzellnen Zeilen eine Leerzeile eingebaut werden soll, oder der TimeStamp anders formatiert werden soll, oder, oder, oder.

Wäre das in einer XML hinterlegt würde der Aufruf sich nicht ändern. Es bracht nur die XML editiert zu werden und schon schauts anders aus.

Das mit den Profiles geht nicht. Der SCCM führt Scripte usw. immer als System aus der hat im Pronzip kein Profil und s müsste ja schon angepasst sein bevor die Installation anläuft. Bei neu aufgesetzen Clients oder solche die gerade aufgesetzt werden leider nicht möglich.

Trotzdem Danke!

Ne andere Idee eventuell??

Grüße Mayho!
Bitte warten ..
Mitglied: colinardo
10.01.2014, aktualisiert 11.01.2014
Habe dazu vor einiger Zeit mal einen Beitrag zum Speichern und Auslesen von Einstellungen aus einer XML-Datei geschrieben, eventuell hilft dir das bei deinem Projekt weiter:
http://www.administrator.de/contentid/208115

Grüße Uwe
Bitte warten ..
Mitglied: mayho33
11.01.2014, aktualisiert um 11:07 Uhr
Hi!

Danke für den ausführliche Beitrag, aber das XML auslesen ist keine Problem.

Ich möchte die Werte aus der XML wieder brauchbar machen. Speichert man einen Wert in der XML (etwa so: XML-Property: Loggoing_StopProc, Value: WriteLog -CreationSteps Progress -LogText "irgendwas") und lese diesen dann in PS in z.B. ein $Value ein, wird er anschließend natürlich nicht mehr als Aufruf einer Function erkannt, ist ja nun ein String. Den umzuwandeln in was Verwertbares habe ich bisher nicht geschafft.

Ich werde es aber auf die 2 Varianten versuchen:

a)
Alle cmdlets übergeben ihre Loggings an eine "Zwischen-Funktion" in der die Formatierung vorgenommen wird. gibt es Änderungen in der Formatierung muss ich das wenigstens nur mehr in einem Cmdlet machen.

Etwa so:

Aufruf im übergeordneten Ps1 = Stop-Procs -ProcessList "proc1,proc2,proc3,..."
in Stop-Procs wird für jeden beendeten Process nun Format-Log -Function Stop_Proc -LogText "stopping process <Name> successfully" aufgerufen
Format-Log baut den eigentlichen Eintrag so zusammen und formatiert ihn, dass er ins Logfile eingetragen werden kann und diese auch gut lesbar ist. Anschließend wird Write-Log mit den entsprechenden Doings aufgerufen und schreibt das Logfile.

Das ganze gibt es dann auch für alle anderen cmdlets. Jedes gibt unformatiert seinen Log an Format-Log weiter. und dieser arbeitet den String entsprechend um.

Ist zwar nicht ganz das was ich ursprünglich machen wollte, weil noch ein ZwischenSchritt drinnen ist und das verlangsamt den Ablauf, aber es ist praktikabel und besser wartbar.

b)
in der XML werden enthält das Property nur mehr das bereits formatierte Value für den LogText. Diesen lese ich in eine Variable ein und übergebe ihn an Write-Log

Was in beiden Varianten halt nicht funktioniert ist z.B. dass ich das ganze Command ändere an einem zentralen Ort.
Etwa so, dass ich z.B. das Property1 von mir aus lösche. Lese ich nun den Folder des XML entsprechend der Function in ein Array ist diese Function halt nicht mehr das. Alles andere ist sehr statisch. Wollte ich vermeiden. Siehe Bsp:

Folder:Stop-Proc:
Property1: Value = WriteLog -CreationSteps Create
Property2: Value = -CreationSteps Progress -LogText "irgendwas"
...
...
Property3: Value =WriteLog -CreationSteps Finish
...
...
Folder: Uninstall
...
...
Folder Install
...
...


Danke trotzdem für deine Unterstützung und Hilfe! Dein Beitrag bekommt ein dickes +

Falls doch noch jemand einen Tipp hat für mich wie ich das so umsetzen könnte wie ich das Anfangs erklärt habe, würde mich das freuen!

lg

Mayho
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.01.2014, aktualisiert 26.01.2014
Zitat von mayho33:
Ich möchte die Werte aus der XML wieder brauchbar machen. Speichert man einen Wert in der XML (etwa so: XML-Property:
Loggoing_StopProc, Value: WriteLog -CreationSteps Progress -LogText "irgendwas") und lese diesen dann in PS in z.B. ein
$Value ein, wird er anschließend natürlich nicht mehr als Aufruf einer Function erkannt, ist ja nun ein String. Den
umzuwandeln in was Verwertbares habe ich bisher nicht geschafft.
Also einen String kannst du so wieder in einen Scriptblock wandeln, das wäre kein Problem:
01.
function Convert-StringToScriptBlock { 
02.
  param( 
03.
  [parameter(ValueFromPipeline=$true,Position=0)] 
04.
  [string] $string 
05.
06.
 $sb = [scriptblock]::Create($string) 
07.
 return $sb 
08.
09.
# Konvertiere einen String zu einem Scriptblock 
10.
$code = echo "Write-host 'Das ist ein Test'" | Convert-StringToScriptBlock 
11.
# führe den Code aus 
12.
&$code
Grüße Uwe
Bitte warten ..
Mitglied: mayho33
26.01.2014 um 23:59 Uhr
Hi Uwe!

Sorry, dass ich mich so lange nicht gemeldet habe, War etwas im Stress.

Danke für diesen echt hilfreichen Tipp! Der ist perfekt!!

Ab jetzt bist du wohl mein Hero!

lg

Mayho

PS: eventuell hast du hier auch sowas geniales parat? ( http://www.administrator.de/contentid/227812 )
Bitte warten ..
Ähnliche Inhalte
Linux
Wiederkehrende Prozesse...
Frage von krueggeLinux1 Kommentar

Hallo, auf einem meiner Server sehe ich das sich folgende prozesse immer wieder starten 30973 ? Ss 0:00 ifconfig ...

Batch & Shell
Array oder Object oder wie soll ich das machen
gelöst Frage von Druide83Batch & Shell4 Kommentare

Hallo, mal wieder verzweifelt. Wahrscheinlich ist die Lösung einfach, aber ich habe gerade keinen Kopf mehr zum klar denken. ...

Firewall
Suchen von object-groups mit bestimmten objects CISCO ASA
Frage von haiqualleFirewall3 Kommentare

Hi all, habe einige ACLs anzupassen Ich suche folgendes: einen Befehl, der mir den Namen der object-group. welche ein ...

Outlook & Mail
Outlook 2013 wiederkehrende Termine
Frage von xbast1xOutlook & Mail1 Kommentar

Hallo zusammen, ein Outlook 2013 CLient hat das Problem, dass wenn der Mitarbeiter einen Serientermin macht, er nur 1x ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 13 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 15 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.