Jump to content

WD40

Members
  • Gesamte Inhalte

    34
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von WD40

  1. Hallo,

    ich wollte mir ein Script schreiben was per Invoke-Command eine Befehl auf verschiedenen Servern ausführt.

     

    Allerdings habe ich da so meine Probleme das ganze in das Gewünschte Resultat zu bringen.

    Zuerst mal hab ich eine Funktion die mir nach dem Aufruf ein Array zurückliefert

     

    Das sieht dann so aus:

    Function Check_DISK ()
    {
        $HOSTNAME = $args[0]
        $Label= $args[1]
        
        $VOL=Invoke-Command -ScriptBlock {param($HOSTNAME, $Label)
        
        Get-Volume -FileSystemLabel $Label
            }  -ComputerName  $HOSTNAME  -ArgumentList $HOSTNAME,$Label
        
        
    
    
        Return $VOL
    }

    Aufgerufen wird das dann mit 

    $VOL=Check_DISK "Servername" "Partionname"

     

     

    Um die gewünscht Liste zu bekommen habe ich eine Formatfunktion erstellt die $VOL als Input nimmt

     

    Function Ausgabe_Format ($VOL)
    {
        $DATE=Get-Date
        $hostname=$VOL | select -exp PSComputerName
        $Label=$VOL | select -exp FileSystemLabel
    
    
        $VOL_Size=$VOL  |  select -exp Size 
        $VOL_Size=[Math]::Round($VOL_Size/1GB,1)
    
    
        $VOL_Free=$VOL  | select -exp SizeRemaining
        $VOL_Free=[Math]::Round($VOL_Free/1GB,1)
    
    
        $VOL_Used=[Math]::Round($VOL_Size-$VOL_Free,1)
    
    
        $VOL_Free_Percent=100-($VOL_Used/$VOL_Size*100)
        $VOL_Free_Percent=[Math]::Round($VOL_Free_Percent,1)
    
    
        
        $VOLINFO = New-Object System.Object
    
    
        $VOLINFO | Add-Member -type NoteProperty -name Host -value $HostName
        $VOLINFO | Add-Member -type NoteProperty -name Label -value $Label
        $VOLINFO | Add-Member -type NoteProperty -name Size[GB] -value $VOL_Size
        $VOLINFO | Add-Member -type NoteProperty -name Used[GB] -value  $VOL_Used
        $VOLINFO | Add-Member -type NoteProperty -name Free[GB] -value $VOL_Free
        $VOLINFO | Add-Member -type NoteProperty -name Percent[%] -value $VOL_Free_Percent
      
        Return $VOLINFO | ft -AutoSize 
    
    }

    Aufgerufen wird beiden dann so:

    $VOL=Check_DISK "Server1" "Partionname"

    $SV1=Ausgabe_Format ($VOL)

     

    $VOL=Check_DISK "Server2" "Partionname"

    $SV2=Ausgabe_Format ($VOL)

     

      

    Wenn ich mir $SV1 und $SV2 aufrufe sieht das so aus:
    $SV1
    
    Host   Label Size[GB] Used[GB] Free[GB] Percent[%]
    ----   ----- -------- -------- -------- ----------
    SV1    FILE    1535,9      439   1096,9       71,4
    
    $SV2
    
    Host Label Size[GB] Used[GB] Free[GB] Percent[%]
    ---- ----- -------- -------- -------- ----------
    SV2  DATA    1023,9    595,6    428,3       41,8

    Das geht dann so weiter für 10 Server.

    Jetzt wolle ich das in ein Object oder Variable zusammenfügen aber ich finde den richtigen Weg nicht.

     

    Was noch am besten klappt ist das:

     

    $result=$SV1

    $result+=$SV2

    $result+=$SV3

    $result+=$SV4

    .....

     

     

    Wenn ich dann $result ausgebe ist aber von jeder Abfrage die Überschrift noch mal mit drin.

    $result
    
    Host   Label Size[GB] Used[GB] Free[GB] Percent[%]
    ----   ----- -------- -------- -------- ----------
    SV1    FILE    1535,9      439   1096,9       71,4
    
    
    Host Label Size[GB] Used[GB] Free[GB] Percent[%]
    ---- ----- -------- -------- -------- ----------
    SV2  DATA    1023,9    595,6    428,3       41,8

    Was ich gerne hätte wäre sowas....

    Aber ich kriegs nicht hin.

    $result
    
    Host   Label Size[GB] Used[GB] Free[GB] Percent[%]
    ----   ----- -------- -------- -------- ----------
    SV1    FILE    1535,9      439   1096,9       71,4
    SV2    DATA    1023,9    595,6    428,3       41,8
    SV3    DATA    1023,9    595,6    428,3       41,8

    Wenn ich beim füllen von $SV..  mit "-HideTabelHeaders" weglasse hab ich gar keine Überschriften.

    Was hilfreich wäre: Mit welchem CMDLET bekomme ich die Ausgaben meherer Befehle in ein Variable die ich mit Select und Format Table wieder schön formatieren kann ?

     

     

    Gruß

    WD40

     

     

     

     

     

     

     

     


    Ich hab meine Fehler gefunden:

    Return $VOLINFO | ft -AutoSize 

    das " | ft -AutoSize "macht mein Objekt kaputt.

     

    Lass ich das weg ist alles gut :-)

     

     

     

     

  2. Hab ich oben geschrieben: 

    Ich möchte eine Funktion auf meinen Servern (2003 & 2008) aktivieren die das starten eine Telent-Prozesses mitloggt.

     

    allerdings möchte ich das ausführen von telnet.exe nicht verhindern sondern ich möchte nur feststellen wo es benutzt wird um die Prozesse dann  anzupassen die das irgendwo benutzen.

     

    Die Idee mit der Aufgabenplanung hört sich gut an, Allerdings finde ich keine passenden Trigger.

  3. Hallo,

    Ich möchte gerne bei allen Servern in meiner Domäne feststellen ob dort irgendwo noch Telenetprozesse innerhalb des lokalen Netzwerks gestartet werden. In diesen Szenario wird mir also das Logfile der Firewall nicht weiterhelfen.

    ich habe schon erfolglos nach eine Lösung mit Boardmitteln gesucht, Leider finde ich nicht den richtigen Kniff.

    Wobei ich glaube das es irgendwie mit dem Windows eingebauten Auditing (Verzeichnisüberwachung oder sowas) gehen müßte.

    Kann mir da einer auf die Sprünge helfen.

    Gerne auch eine Lösung die über Gruppenrichtlinien funktioniert. Leider habe ich da wenig praktische Erfahrung wie man so etwas angehen könnte.

     

    Danke im Voraus für Tips.

     

    Gruß

    WD40



    Hallo,

    ich will noch kurz was Ergänzen.

     

    Ich möchte eine Funktion auf meinen Servern (2003 & 2008) aktivieren die das starten eine Telent-Prozesses mitloggt.

    Also nur das Starten der TELNET.EXE.

    Verbindungsadressen o.ä. sind dabei zweitranig. Wenn ich die Server kenne wo noch Telnet gestartet wird reicht mir das.

    Die Lokale Firewall der Server darf ich nicht einschalten...

  4. Nochmal: Was hast du mit der Backup DB vor? Wieso machst du das?

     

    ich sichere die DB jede Nacht und spiele sie auf dem 2. Server auch per Script wieder ein.

    Funktioniert soweit.

     

     

    Ich mache jede Stunde eine DIFF Sicherung und will sie dann bei Bedarf auch wieder per Script einspielen,

    Das geht solange ich die Sicherungen alle mit der Option NORECOYERY einspiele.

    Dann muß ich wenn ich DB wirklich nutzen will aber diese vorher erst wieder verfügbar machen.

     

    Mein Gedanke ist nun die DB nachts abzugleichen (mit dem Fullbackup) und verfügbar zu halten und wenn es dann schnell gehen muß, kurz die DIFF Sicherung dran zuhängen.

     

    Ich weiß zwar das das auch mit dem Transactionslog geht, das bekomme ich aber nicht hin...

  5. Hallo,

    ich wollte mich mal kurz zurückmelden.

    Ich habe wohl Anfängerfehler gemacht.

     

    Wenn ich eine DB mit mehreren DIFF oder Transactionssicherungen aktuell halten will, muß die DB also solange immer mit NORECOVERY zurückgesichert werden, bis man Final die DB wieder nutzbar macht und die letzte Sicherung halt OHNE die NORECOYERY wiederherstellt.

     

    Nachdem ich jetzt hier mit der "Trial & Error" Erfahrung damit gesammelt habe, erscheint mir die Variante mit einer Diffsicherung zu arbeiten aber irgendwie einfacher als mit mit Transactionssicherung.

    Letzteres hat bei mir nicht immer zum gewünschten Ergebnis geführt.

     

    Mein Ziel habe ich allerdings nicht erreicht.

    Ich wollte ja eine ständig aktualisierte nutzbare DB haben.

    Für mich erscheint es nun besser zu sein die Db also immer mit NORECOVERY zu restoren um am Ende abschließend die DB mit einer finalen DIFF Sicherung OHNE NORECOYERY wieder für meine System verfügbar zu machen.

     

    Eine Abschließende frage bleibt noch:

     

    Gibts noch einen Befehl mit dem man die DB aus dem Zustand RECOVER befreien kann ohne ein weiteres Restore einzuspielen ?

     

    Gruß

    WD40

  6. RESTORE DATABASE DB-Name WITH RECOVERY;

     

    So viel ich weiß.

     

    Wiso nutzt du keine Transaktions Protokoll Sicherungen für das ganze? Die gehen schneller und du hast weniger Datenverlust.

     

    Weil ich noch nicht weiß wie das funktioniert.

    Das FULL/DIFF Backup der DB kann man ja einfach im Managementstudio zusammen klicken.

    Wie gesagt SQL ist für mich ein Neues Thema auch wenn ich mich mit Servern und Netzwerk schon lange beschäftige.

  7. Ich glaube das war der entscheidende Hinweis.

    FULL Backup geht mit NORECOVERY und RECOVERY.

    Aber das DIFF klapt nur wenn ich vorher mit der Option NORECOVERY zurückgespielt habe.

     

    Wenn ich das wieder mit NORECOVERY mache kann ich auch eine Weitere DIFF einspielen.

     

    Jetzt bleibt noch eine Sache:

    Wenn ich jede Stunde eine Diffsicherung mit NORECOYERY einspiele und ich dann den Fall habe das es kein weiteres DIFF File gibt, wie bekomme ich die DB dann wieder in den Normalzustand ?

     

    Irgendein Befehl mit RECOVERY (Ohne Restore)?

  8. Wieso nutzt du keine Standard oder Enterpriseversion, bei der du alle HA Möglichkeiten zur Verfügung hast? Reicht ein Backup nicht, welches du im Disasterfall zurückspielst?

     

    Hi,

    nun, die Expressversion kostet nichts im Gegensatz zu den von Dir genannten.

     

    Das was ich haben will ist halt nice to have und sollte mit ein paar Zeilen Scrip ja zu schaffen sein. Ich habe ja auch schon das meiste gelößt, es fehlt halt nur die Option mit dem nachziehen der DIFF Sicherung.

     

    Das eigentliche Problem ist aber nicht das fehlen der Optionen, sondern die Fehlermeldung die ich im ersten Beitrag beschrieben habe. Da ich noch wenig Erfahrung mit SQL habe, ist meine Vermutung, das ich irgendetwas triviales übersehe. Daher habe ich mich mit meinem Anliegen mal hier ans Board gewannt.

  9. Hallo,

    ich versuche seit ein paar Tagen eine möglichst einfache Methode zu ermitteln um eine SQL Express Datenbank auf einem Backupserver möglichst syncron zu halten.

    Da SQL Express keine Replikation erlaubt und auch keine Wartungspläne einzurichten sind, ahbe ich mir folgendes Ausgedacht.

     

    Mittels SQLCMD mache ich Nachts ein Voll Backup der Datenbank und ein copy auf den Zielserver (per Taskplaner).

    Das klappt soweit tadellos:

    BACKUP DATABASE [RMCS]

    TO DISK = N'D:\Backup_SQL_DB\Backup1.bak'

    WITH NOFORMAT, NOINIT, NAME = N'RMCS-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

    GO

     

    Diese Datenbank kann ich auf dem Backupserver auch ohne Fehler wieder per RESTORE wiederherstellen.

     

    Als nächsten Schritt möchte ich stündlich die Datenbank aktualisieren und dachte es ähnlich mit einer Diffsicherung zu machen, die dann per Script regelmäßig wieder eingespielt wird.

    Jetzt habe ich das einmal von Hand mit dem Management Studio versucht.

    Das funktioniert aber nicht.

     

    Es kommt eine Fehlermeldung Vom Management Studio:

    Restore failed for Server xxx

    Additional information -> System.Data.SqlClient.SqlError:

    The log or differential backup cannot be restored because no files are ready to rollforward.

     

    Kann mir jemand sagen wo das Problem liegt ?

     

    Ich weiß auch das man per Logshipping zum Ziel kommt, da habe ich aber noch keinen Plan wie das laufen kann....

     

    Gruß

    WD40

  10. Ich muß mich nochmal korigieren.

    Der Autologon funktioniert doch richtig. Auf der VMWARRE Konsole sieht man das entsperrte Desktop.

     

    Das Problem ist ein anderes:

    Wenn ich mit mit mstsc /V:servername /admin an meinem Server mit dem User anmelde der auch automatisch eingeloggt wird sehe ich seine Session.

    Ich ging bisher davon aus, das ich durch den Schalter /admin mit der Konsolensession verbunden werde, allerdings wird dann an der wirklichen Konsole in VMware (entspricht einem angeschlossenem Monitor) der gesperrte Desktop angezeigt. Das wäre noch zu verschmerzen, was dann allerdings **** ist wenn ich die Session trenne (Nicht abmelde) bleibt die VM Konsole gesperrt.

    kann ich das irgendwie einstellen das die ggf automatuisch wieder entsperrt wird ?

     

    Gruß

    WD40

  11. Hi, ich habe auf einem Server ein Applikation die ein geöffnetes Fenster benötigt.

    Da ich dieses Fenster immer geöffnet haben muß habe ich mit dem TOOL Autologin von Sysinternals schon mal die Einstellung gemacht, das der Server nach dem Booten den User einloggt und per Autostart meine Applikation startet.

    Das geht soweit.

    Jetzt handelt es sich um einen virtuellen Server (VMWare) und ein SupportUser hat in VMWARE das recht sich die Konsole des Servers anzusehen (kann aber keine eingaben machen)

     

    Mein Problem ist, das die Konsolensession nach dem Autostart gesperrt ist.

    Der User sieht also nur den gesperrten Desktop was nicht so gedacht ist.

     

    Gibts da eine Lösung wie man den Bildschirm entsperrt lassen kann ?

    Der Bildschirmschoner ist natürlich deaktiviert.

     

    Gruß

    WD40

×
×
  • Neu erstellen...