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

Frage Entwicklung Batch & Shell

Suchen eines Dateinamen, Timer

Mitglied: internet2107

internet2107 (Level 1) - Jetzt verbinden

12.11.2014, aktualisiert 07:10 Uhr, 1143 Aufrufe

Hallo.

Ich habe folgende Frage. Ich habe eine Liste von PCs, die eingelesen wird und dann in einer Listbox angezeigt wird.
Diese PCs kann man dann nach Wunsch markieren und damit diverse Dinge in Auftrag geben, z.B. das PC A, G, X, Z markiert werden, dann sollen sie rebooten.

In dieser Geschichte sollen PCs auch gepatcht werden. All das funktioniert auch jeweils einwandfrei.
Nur habe ich folgendes Problem.

Wenn das Patchen fertig ist, ändert der jeweilige PC eine Datei, hierbei wird der Name der Datei entsprechend geändert, was den aktuellen Releasestand ausgibt. Soweit so gut.
Es soll aber nun folgend ablaufen. Da ja nicht alle PCs gleich schnell sind mit dem Patchen, ändert z.B. PC A den Dateinamen 4 Minuten schneller, als PC Z.

Mein Wunsch ist nun:
Das Programmm, was das Patchen und andere Dinge steuert, soll nun per Art Timer alle 5 Minuten schauen, ob PC XYZ das Update fertig hat und wenn ja, entsprechend weiter handeln. Sollte der Dateinamen noch nicht geändert sein, also den richtigen Releasestand haben, soll der Timer wieder von vorne beginnen.

Ich verzweifle daran, weil alles andere vorher klappt jeweils super, nur das mit dem Timer und dem "Schau nach, ob... und wenn ja... dann mach..." will nicht so hinhauen.
Denn er macht es aktuell auf einem!!! PC, und zwar dem jeweils ersten markierten, aber dann nicht mehr mit dem Rest

Ich poste mal Codeausschnitt, damit man es besser verstehen kann:

01.
# Beginne Update 
02.
$job_test = $listbox.SelectedItems 
03.
foreach ($backupcomputer in $job_test) 
04.
05.
{ $x += $backupcomputer } 
06.
if (Test-Connection -Computername $backupcomputer -BufferSize 16 -Count 2 -Quiet) 
07.
08.
# hier macht er entsprechende Schritte für ein Update.  
09.
# in diesem Fall führt er eine Datei aus, die auf dem Remote-PC liegt (.ps1-Datei) 
10.
11.
else 
12.
13.
Write "Pc $backupcomputer offline. Kein Patch-Update möglich." >>$patchupdate_Maschine_error_set 
14.
$reboot_is_set.Text = "HINWEIS!! - Diese/r PC ist/sind offline: " + $backupcomputer 
15.
16.
}
  1. ab hier nun das eigentliche Problem:

01.
# patch fertig, warte auf Abschluss 
02.
			$job_test = $listbox.SelectedItems 
03.
			foreach ($backupcomputer in $job_test) 
04.
05.
				{ $x += $backupcomputer } 
06.
				 
07.
Write "Setze Timer auf Pc: $backupcomputer" >>$patchupdate_log 
08.
$remotepc = "\\" + $backupcomputer 
09.
$patch_finished = $remotepc + "\c$\support\" + $release_type 
10.
 
11.
If ((Test-Path $patch_finished) -and ($reboot_is_set.text -eq "Reboot nach Patchen ist gesetzt")) 
12.
13.
Write-Host $backupcomputer "ist fertig gepatcht, kann rebootet werden" 
14.
$jobstatus.text = "PC " + $backupcomputer + " fertig gepatcht" 
15.
Write "Patchupdate fertig auf Pc: $backupcomputer" >>$patchupdate_log 
16.
Write "Starte Nacharbeiten Patchupdate auf Pc: $backupcomputer" >>$patchupdate_log 
17.
Start-Sleep -m 15000 # 15 Sekunden 
18.
$jobstatus.text = "Restart von: " + $backupcomputer 
19.
Restart-Computer -ComputerName $backupcomputer -Force 
20.
Write "Reboot von Pc: $backupcomputer" >>$patchupdate_log 
21.
$jobstatus.text = "PC " + $backupcomputer + " Warte 10 Minuten für Restarbeiten..." 
22.
$richtextbox1.Text = "Warte 10 Minuten für Restarbeiten auf: $backupcomputer" 
23.
Start-Sleep -m 600000 # 10 Minuten 
24.
Write-Host $backupcomputer "Rechner komplett fertig" 
25.
Write "Patchupdate fertig auf Pc: $backupcomputer" >>$patchupdate_log 
26.
$richtextbox1.Text = "$backupcomputer komplett fertig gepatcht und rebootet..." 
27.
$checkboxAutomatischerUserlog.Enabled = $true 
28.
$groupbox1.Enabled = $true 
29.
$checkboxuhrzeit2_1.Enabled = $true 
30.
$start_ini.Enabled = $true 
31.
$buttonOK.Enabled = $true 
32.
$buttonCancel.Enabled = $true 
33.
34.
elseif ((Test-Path $patch_finished) -and ($reboot_is_set.text -eq "Reboot nach Patchen ist nicht gesetzt")) 
35.
36.
Write-Host $backupcomputer "ist fertig gepatcht, kann rebootet werden" 
37.
Write "Patchupdate fertig auf Pc, kann rebootet werden: $backupcomputer" >>$patchupdate_log 
38.
$richtextbox1.Text = "$backupcomputer komplett fertig, kann rebootet werden..." 
39.
40.
else 
41.
42.
#Start-Sleep -Milliseconds 300000 
43.
$jobstatus.text = "PC " + $backupcomputer + " noch nicht fertig" 
44.
Write "Patchupdate noch nicht fertig auf Pc: $backupcomputer, Restart Timer" >>$patchupdate_log 
45.
 
46.
47.
 
Hier kommt nun eine letzte Anweisung, diese darf aber erst dann erfolgen, WENN der Dateiname (Code oben) den richtigen Stand hat.

01.
$job_test = $listbox.SelectedItems 
02.
Foreach ($backupcomputer in $job_test) 
03.
04.
{ $x += $backupcomputer } 
05.
# Restarbeiten.... 
06.
07.
 
Ähnliche Inhalte
Microsoft
Suche und Ersetzen im Dateinamen mit Wildcard?
gelöst Frage von GottfriedKernMicrosoft5 Kommentare

Ich suche ein Programm, dass Dateinamen durchsucht und mittels Platzhalter ersetzen kann. Beispiel: toller - sound (2002).mp3 soll in ...

Mac OS X
Time Machine - Wird der Schlüsselbund gesichert?
gelöst Frage von 119851Mac OS X3 Kommentare

Hallo Leute, ich nutze seit kurzem Time Machine für meine Backups (+ File Vault 2). Nun wollte ich mal ...

Netzwerkmanagement
DHCP Lease Time Empfehlung?
gelöst Frage von lcer00Netzwerkmanagement6 Kommentare

Hallo zusammen, Beim DHCP- oder DNS-Serverwechsel habe ich mir angewöhnt die DHCP-Lease-Time auf einen möglichst geringen Wert einzustellen um ...

Datenbanken
HILFE :-) Time Fehler bei MySQL
gelöst Frage von oneofakind88Datenbanken2 Kommentare

Hallo zusammen, bin hier auf einen Fehler gestoßen und komme einfach nicht dahinter wiso mir MySQL einen NULL wert ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 16 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...