Jump to content

Batchskript zum domänenweiten beenden von Prozessen - eure Meinung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Da würde ich persönlich lieber die Rechner mit Hilfe PSEXEC.EXE abschalten, die man abschalten kann. Bei den anderen manuell prüfen oder den Prozess killen.

 

 

Muss ich mir mal überlegen, wie ich das am besten mache. Zwischenzeitlich gab es ja so einige Antworten.

Ich war heute schon mal ganz froh, dass die Modernisierung eines Lagers, die intern hauptsächlich ich mit betreue, sehr gut voran geht. Daneben hatte ich dann größtenteils noch ein bisschen "Tagesgeschäft". Mir reichte das dann für heute.

 

 

IsOpen ist die Funktion zum prüfen.

 

Genau diese hat die Entwicklerin schon erwähnt gehabt und meinte, dass die gestellte Anforderung damit nicht zu realisieren sei, weil man damit jetzt auch nicht so viel anfangen könnte. Eventuell ist der Tipp (in Form des Links) von dir aber sehr gut. Den werde ich vermutlich mal weiter geben.

Mit ein bisschen Glück, bekomme ich nach diesem Wochenende auch noch andere Ansätze, die ich evtl. weiter geben kann.

 

Mein Hirn verabschiedet sich so so langsam mal in Richtung Wochenende. Vergesst nicht, dass am Sonntag Muttertag ist. Schenken werde ich nichts... nur mal meine Eltern aufsuchen. Das muss reichen.  ;)

bearbeitet von willy-goergen
Link zu diesem Kommentar

Genau diese hat die Entwicklerin schon erwähnt gehabt und meinte, dass die gestellte Anforderung damit nicht zu realisieren sei, weil man damit jetzt auch nicht so viel anfangen könnte. Eventuell ist der Tipp (in Form des Links) von dir aber sehr gut. Den werde ich vermutlich mal weiter geben.

Mit ein bisschen Glück, bekomme ich nach diesem Wochenende auch noch andere Ansätze, die ich evtl. weiter geben kann.

If IsOpen = True then

'Verbindung ist offen

ElseIF IsOpen = False then

'Verbindung ist nicht offen, am besten jetzt hier öffnen und einen Hinweis dem Benutzer geben.

End if

bearbeitet von Sunny61
Link zu diesem Kommentar

If IsOpen = True then

'Verbindung ist offen

ElseIF IsOpen = False then

'Verbindung ist nicht offen, am besten jetzt hier öffnen und einen Hinweis dem Benutzer geben.

End if

 

Ich vermute mal, du beziehst dich auf die Deklaration einer Unterfunktion in einem Teils des Programmcodes?

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If IsOpen(mCnn) Then
            mCnn.Close()
            mCnn.Dispose()
        End If
    End Sub 

 Wenn ja, wäre die Lösung nicht wirklich allzu schwer. Andererseits...

 

Gibt es bei der Isopen-Funktion dann eine Art Polling-Funktion? Weil so wie ich das jetzt verstanden hätte, wird der Status nur ein einziges Mal abgefragt und die Verbindung, bzw. das Programm dann geschlossen.

 

Das hier würde meiner Vorgabe, die ich den Entwicklern gemacht habe, nicht entsprechen. Ich habe vorgegeben, dass die Verbindungsversuche nach einem fehlgeschlagenen Versuch n-Mal (wobei "n" dann noch zu definieren wäre) fortzusetzen ist.

 

EDIT: Dafür gibt's wohl dann ne Schleife. Denke ich zumindest gerade...

 

Wenn es aber nicht anders geht, wäre dein Ansatz auch o.k. (bitte meinen Einwurf nicht falsch verstehen... Ich bin sehr froh, wenn man sich über sowas austauschen kann.)  

Wobei dieser Fehlerfall, soweit ich mich jetzt dazu informiert habe, sowieso weniger kritisch wäre, weil erst gar nichts auf die Datenbank weggeschrieben werden kann. Schlimmer wäre es wohl, wenn ein Fehler während des Schreibzugriffs auf die Datenbank geschieht.

bearbeitet von willy-goergen
Link zu diesem Kommentar

Gibt es bei der Isopen-Funktion dann eine Art Polling-Funktion? Weil so wie ich das jetzt verstanden hätte, wird der Status nur ein einziges Mal abgefragt und die Verbindung, bzw. das Programm dann geschlossen.

Du kannst doch jedesmal wenn Du auf die Datenbank zugreifen willst, zuerst prüfen ob die Verbindung steht oder nicht. Wenn nicht, aufbauen und beim xten Fehlversuch den Benutzer informieren. Natürlich muss Gehirnschmalz investiert werden, aber das lohnt sich IMHO.

 

EDIT: Dafür gibt's wohl dann ne Schleife. Denke ich zumindest gerade...

If then else ist keine Schleife.

 

 

Wenn es aber nicht anders geht, wäre dein Ansatz auch o.k. (bitte meinen Einwurf nicht falsch verstehen... Ich bin sehr froh, wenn man sich über sowas austauschen kann.)  

Wobei dieser Fehlerfall, soweit ich mich jetzt dazu informiert habe, sowieso weniger kritisch wäre, weil erst gar nichts auf die Datenbank weggeschrieben werden kann. Schlimmer wäre es wohl, wenn ein Fehler während des Schreibzugriffs auf die Datenbank geschieht.

Wenn ein Schreibzugriff fehl schlägt, kannst Du das wohl nicht verhindern, nur abfangen.

Link zu diesem Kommentar

If then else ist keine Schleife.

 

 

Mein Gedanke war eine Zählsschleife um das "if then else" zu bauen.

int i = 0;

for (i < 5)
{
If IsOpen = True then
{
break;
}
ElseIF (IsOpen = False && i < 5) then 
{
i++;
}
End if
}

if i = 5 then
print 'Verbindung ist nicht offen, am besten jetzt hier öffnen und einen Hinweis dem Benutzer geben.
End if

Irgendwie so war meine Überlegung...

Bin aber auch kein Programmierer. Ich denke, ich werde mich die Tage mal mit den Entwicklern über das Thema unterhalten.

 

Danke erst Mal so weit für die (themenfremde) Hilfe. :)

bearbeitet von willy-goergen
Link zu diesem Kommentar
  • 5 Monate später...

Ich wollte mal kurz Rückmeldung geben, wie ich das Problem mit den Updates am ERP-System gelöst habe. Hat zwar nicht mehr wirklich viel mit Skripting zu tun, aber gut...

 

Muss man sehen, ob es sich so bewährt. Das ERP-System wurde bis vor kurzem über ausführbare Dateien gestartet, die in einer Netzwerkfreigabe lagen.

Diese ausführbaren Dateien mit den Programmmodulen können aber im Prinzip überall liegen, auch lokal. In der Regel mussten immer nur die ausführbaren Dateien bei Aktualisierungen ausgetauscht werden. Dafür musste ich alle Benutzer vorher rausschmeißen, weil sie die Datei(en) blockiert haben.

 

Von daher habe ich mir gedacht, ich schiebe die Dateien bei jeder Benutzeranmeldung in ein Verzeichnis, das auf den Clients sowieso lokal durch die Installationsroutine des ERP-Systems angelegt wird.

 

Realisiert habe ich das mit Robocopy und einem Anmeldeskript, das ich per GPO verteile. Es werden immer nur veränderte Dateien kopiert. Sollte ich mal ein Modul (eine ausführbare Datei) aktualisieren müssen - mehr ist es in der Regel nicht - kann ich das jetzt ganz in Ruhe machen. Die Clients holen sich das Update dann selbst bei der nächsten Anmeldung.

 

Programmseitig haben die Entwickler immer noch nichts gemacht, obwohl es oft genug gesagt wurde. Sollte wirklich mal die Verbindung zur SQL-DB abbrechen, stürzt das Programm halt ab.

bearbeitet von willy-goergen
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...