Jump to content

wbpolicy Script Problem


Recommended Posts

Hallo, 

an alle die helfen :)

 

Das Script was unten beigefügt ist funktioniert zu 100%, ich habe nur Probleme bei den Anpassungen

 

Ich habe ein Script geschrieben was mir alle Daten von meinem FileServer auf meinem 1. Backup Server täglich um 21:00 schreiben soll, jedoch habe ich da ein paar Probleme noch

 

- 1. Problem

                     Ich hab keine Ahnung wie ich nicht die kompletten Festplatten sicher, aktuell habe ich in dem Script alle Festplatten mit allen Daten als Backup, ich würde aber gerne nur die "Festplatte D:" in dem Backup haben und nicht die Festplatte C und D

- 2. Problem

                     Ich habe hier ein tägliches Backup auf den Server "192.168.1.6" jedoch würde ich gerne ein Backup aufziehen das wie folgt aussieht:
Nach dem Sohn-Vater-Großvater Prinzip

 

- auf dem Server 192.168.1.6 soll täglich von der Festplatte D ein Backup um 21:00 gemacht werden
- auf dem Server 192.168.1.7 soll jeden Sonntag 21:30 von dem Backupordner auf dem Server 192.168.1.6 ein Backup gemacht werden und nach dem Backup die Daten im Backup Ordner (aber nicht den Ordner) auf dem Server 192.168.1.6 gelöscht werden

- auf dem Server 192.168.1.8 soll jeden 1. des Monat um 22:00 von dem Backupordner auf dem Server 192.168.1.7 ein Backup gemacht werden und nach dem Backup die Daten im Backup Ordner (aber nicht den Ordner) auf dem Server 192.168.1.7 gelöscht werden.

 

jedoch habe ich keine Ahnung was ich da ändern muss in meinem Script für, ich gehe davon aus :

 

- das die Usernamen geändert werden müssen 192.168.1.6 ist ja "bu01", dann wäre 192.168.1.7 "bu02" und 192.168.1.8 wäre dann "bu03"

- die Uhrzeiten müssten geändert werden, wo ich keine ahnung habe wie ich eingebe das es wöchentlich und immer zum 1. des Monats ins Script geschrieben werden muss.

 

Ich hab das Script unten angeführt und bedanke mich für die Hilfe, ich hoffe das die Kommentare zu der Übersicht helfen.

 

Danke für eure Hilfe ! 

 

 

 <# Backup Script erstellen
    In diesem Script erstelle ich eine WindowsBackuppolicy die dafür sorgt das täglich alle Daten
    auf dem Backup Server gesichert werden.
 #>

 $featurename = "windows-server-backup"  #<- cmdlet für den Namen des Windows Features

 <# Mit der folgenden IF-Schleife wird überprüft ob das benötigte WindowsFeature installiert ist oder nicht, wenn nicht
 wird es daraufhin installiert.
 #>
 if (!(Get-WindowsFeature).where({$_.name -eq $featurename}).installstate -eq "installed"){
 try {
 Install-WindowsFeature -Name $featurename

 Write-Host "Windows-Server-Backup erfolgreich installiert" -ForegroundColor Green

 }catch{
 write-host "konnte windows feature nicht installieren, da folgender fehler passiert ist $($error[-1].exception)" -ForegroundColor Red
 } #ende von catchblock
 }
 else{
 write-host "windows feature bereits installiert" -ForegroundColor Yellow

 }      
#< auch wenn es nicht erfolderlich ist, ein restart ist angebracht damit es mit den folgenden cmdlets kein Problem gibt.
#>
restart-computer
          
# Windows Backup Policy erstellen            
$wbpolicy = New-WBPolicy            
            
# disks auslesen, damit die Volumes ausgelesen werden können (Disks = interne + externe)            
$wbdisk = Get-WBDisk            
            
# Credentials für Windows Backup Target (in diesem Fall für Netzwerkpaths)            
$username = "bu01"            
$password = "Password1"
$credentials = New-Object System.Management.Automation.PSCredential($username, (ConvertTo-SecureString $password -AsPlainText -Force))            
            
# Windows Backup Target erstellen & der Policy hinzufügen            
$wbbackuptarget = New-WBBackupTarget -NetworkPath "\\192.168.1.6\Backup\" -Credential $credentials            
Add-WBBackupTarget -Policy $wbpolicy -Target $wbbackuptarget            
            
# Lokalen User erstellen, der Backup Operatoren Gruppe hinzufügen, damit die Policy gespeichert werden kann            
New-LocalUser -name $username -Password (ConvertTo-SecureString $password -AsPlainText -Force) -AccountNeverExpires:$true -Description "backup operators user"            
New-ADGroup -Name "Backup operators" -GroupScope Global 
Add-ADGroupMember -Identity "Backup operators" -Members "bu01" -PassThru

          
# Tägliches Schedule hinterlegen            
[datetime]$wbschedule = '21:00'            
Set-WBSchedule -Policy $wbpolicy -Schedule $wbschedule            
            
            
# Volumes auslesen, damit diese gesichert werden können            
$wbvolume = Get-WBVolume -Disk $wbdisk            
            
# Volume der Policy hinzufügen (EFI Partition ausgeschlossen)            
Add-WBVolume -Policy $wbpolicy -Volume $wbvolume            
            
# Systemstand mitsichern            
Add-WBSystemState -Policy $wbpolicy            
            
# Baremetalrecovery konfigurieren für Baremetalrestores (wird EFI Partition, etc. alles mitgesichert)            
Add-WBBareMetalRecovery -Policy $wbpolicy            
            
# Windows Backup starten | async switch erlaubt es, weiterhin mit dem Terminal zu arbeiten (nichts blockieren)            
Start-WBBackup -Policy $wbpolicy -Async            
            
# Windows Backup Policy speichern            
set-wbpolicy -policy $wbpolicy

 

Link to post
vor 2 Stunden schrieb congeries:

Das Script was unten beigefügt ist funktioniert zu 100%,

 

... was nicht heißt, dass es gut ist, so wie es ist. ;-)  

 

vor 2 Stunden schrieb congeries:

ich habe nur Probleme bei den Anpassungen

 

Es ist also nicht von Dir, richtig? Hast Du den Autor schon gebeten, Dir bei den Anpassungen zu helfen?

 

vor 2 Stunden schrieb congeries:

- auf dem Server 192.168.1.7 soll jeden Sonntag 21:30 von dem Backupordner auf dem Server 192.168.1.6 ein Backup gemacht werden und nach dem Backup die Daten im Backup Ordner (aber nicht den Ordner) auf dem Server 192.168.1.6 gelöscht werden

 

Ich würde empfehlen, das in ein separates Script auszulagern, welches auf dem Server "192.168.1.6" läuft. Wenn Du es von einem anderen Server aus startest, läuft der nötige Copy-Job über diesen Server und verursacht so unnötig Traffic.

Das Gleiche gilt für den "Großvater-Job", um mal in Deiner Terminologie zu bleiben. ;-) 

 

Ich übergehe mal, dass Du Schritte im Script hast, die Du immer wieder machst, obwohl sie ein einziges Mal nötig wären. 

 

Zum Thema Sonntagsbackup: PowerShell arbeitet mit Objekten und Eigenschaften. Wenn Du mit

$Datum = Get-Date 

das Datum des aktuellen Tages in der Variablen speicherst, kannst Du mit 

$Datum.DayOfWeek

den Wochentag als Text ausgeben oder mit 

$Datum.DayOfWeek.value__

als Zahl. In einem Vergleich brauchst Du also nur ermitteln ob der aktuelle Tag "Sunday" ist  oder eben "0", wenn Du es als Zahl ausgibst.

Den aktuelle Tag des Monats bekommst Du dann ganz einfach mit 

$Datum.Day

Wenn der "1" ist, ist es der Erste des Monats. ;-) 

 

vor 2 Stunden schrieb congeries:

1. Problem

                     Ich hab keine Ahnung wie ich nicht die kompletten Festplatten sicher, aktuell habe ich in dem Script alle Festplatten mit allen Daten als Backup, ich würde aber gerne nur die "Festplatte D:" in dem Backup haben und nicht die Festplatte C und D

 

Mit 

# disks auslesen, damit die Volumes ausgelesen werden können (Disks = interne + externe)            
$wbdisk = Get-WBDisk

ermittelst Du ALLE Laufwerke und übernimmst diese mit 

# Volumes auslesen, damit diese gesichert werden können            
$wbvolume = Get-WBVolume -Disk $wbdisk            
            
# Volume der Policy hinzufügen (EFI Partition ausgeschlossen)            
Add-WBVolume -Policy $wbpolicy -Volume $wbvolume

 

in Deine Backup-Policy. 

Wenn Du nur ausgewählte Laufwerke übernehmen möchtest, musst Du an dieser Stelle alle unerwünschten ausfiltern. Lass Dir einfach mal die Variable "$wbdisk" auf der Konsole ausgeben und filtere dann z.B. mit einem Where-Object die Laufwerke aus, die Du nicht sichern möchtest.

Edited by BOfH_666
Link to post
vor einer Stunde schrieb BOfH_666:

 

... was nicht heißt, dass es gut ist, so wie es ist. ;-)  

 

 

 

 

Das mag sein :P haha :) aber besser ging es nicht.

 

vor einer Stunde schrieb BOfH_666:

 

Es ist also nicht von Dir, richtig? Hast Du den Autor schon gebeten, Dir bei den Anpassungen zu helfen?

 

 

 

Ich würde sagen jeder schaut hier im Forum nach, bzw. nutzt google.de wenn er nicht weiterkommt. Daher sind viele Ideen hier in das Script eingeflossen und aus diesem Grund kann es auch hier vermehrt zu Zeilen gekommen sein die doppelt wären.

 

vor einer Stunde schrieb BOfH_666:

 

 

Ich übergehe mal, dass Du Schritte im Script hast, die Du immer wieder machst, obwohl sie ein einziges Mal nötig wären. 

 

 

was meinst du damit?

Dann könnte ich das Script ja optimieren, ich dachte aber das ich die Schritte benötige.

Jedoch denke ich das ich manche weglassen kann wie z.B. User anlegen das kann ich ja auch in einem anderen machen, wollte das eher mehr als Grundlage benutzten, wie gesagt ist aus vielen Sachen zusammen geschustert haha 

 

vor einer Stunde schrieb BOfH_666:

 

Ich würde empfehlen, das in ein separates Script auszulagern, welches auf dem Server "192.168.1.6" läuft. Wenn Du es von einem anderen Server aus startest, läuft der nötige Copy-Job über diesen Server und verursacht so unnötig Traffic.

Das Gleiche gilt für den "Großvater-Job", um mal in Deiner Terminologie zu bleiben. ;-) 

 

 

War auch so gedacht, aber dann kam mir der Gedanke, dass ich diese Scripts vom FileServer aus starten müsste oder sehe ich das falsch? 

Ich wollte 3 Scripts draus machen aber wenn ich den Pfad eingebe müsste ich das Script doch vom FileServer starten also dann die 3 Scripts jeweils vom FileServer? oder sehe ich das falsch?

 

vor einer Stunde schrieb BOfH_666:

 

 

Zum Thema Sonntagsbackup: PowerShell arbeitet mit Objekten und Eigenschaften. Wenn Du mit



$Datum = Get-Date 

das Datum des aktuellen Tages in der Variablen speicherst, kannst Du mit 



$Datum.DayOfWeek

den Wochentag als Text ausgeben oder mit 



$Datum.DayOfWeek.value__

als Zahl. In einem Vergleich brauchst Du also nur ermitteln ob der aktuelle Tag "Sunday" ist  oder eben "0", wenn Du es als Zahl ausgibst.

Den aktuelle Tag des Monats bekommst Du dann ganz einfach mit 



$Datum.Day

Wenn der "1" ist, ist es der Erste des Monats. ;-) 

 

 

wie gesagt bin absoluter Anfänger und versuche das gerade zu verstehen, jedoch komm ich verständnishalber nicht ganz mit.

 

ein Beispiel würde mir als Verständnis doch sehr helfen.

 

- mit Get-Date bekomme ich ja das aktuelle Datum, wenn dieses aber an dem Tag wo ich das Script erstelle nicht der Sonntag ist wie kann ich dann den Sonntag auf das cmdlet festsetzen, reicht es dort einfach stupide das Datum einzutragen (z.B. 31.10.2021)

- das  ab dem Wochentag als Text ausgeben habe ich nicht verstanden (sry noob)

vor einer Stunde schrieb BOfH_666:

Mit 



# disks auslesen, damit die Volumes ausgelesen werden können (Disks = interne + externe)            
$wbdisk = Get-WBDisk

ermittelst Du ALLE Laufwerke und übernimmst diese mit 



# Volumes auslesen, damit diese gesichert werden können            
$wbvolume = Get-WBVolume -Disk $wbdisk            
            
# Volume der Policy hinzufügen (EFI Partition ausgeschlossen)            
Add-WBVolume -Policy $wbpolicy -Volume $wbvolume

 

in Deine Backup-Policy. 

Wenn Du nur ausgewählte Laufwerke übernehmen möchtest, musst Du an dieser Stelle alle unerwünschten ausfiltern. Lass Dir einfach mal die Variable "$wbdisk" auf der Konsole ausgeben und filtere dann z.B. mit einem Where-Object die Laufwerke aus, die Du nicht sichern möchtest.

habe hier nicht ganz verstanden wie ich das danach mit "Where-Object" auswählen soll welches Laufwerk bzw. welche Daten genommen werden sollen.

 

hast du ein Beispiel für mich das ich das verstehe in der Umsetzung, dann kann ich mich daran probieren und herausfinden wie ich das brauche und wie es funktioniert?

 

 

 

Dank dir für deine Hilfe,
wie gesagt das Script ist nicht zu 100% von mir, aber wie soll das auch gehen wenn ich gerade das 1. mal an einem Projekt mit PowerShell arbeite :), natürlich sucht man sich dann hilfe mit google.de usw. :) denke mal das dies auch vollkommen berechtigt ist. Würde aber niemals wenn ich ein Script sehe irgend jemand seine Credits dafür nehmen wollen, wäre hart assi oder? ^^

Edited by congeries
Link to post
vor einer Stunde schrieb MurdocX:

Wieviel Server habt Ihr denn zu sichern? Vielleicht kenne ich ja eine effektive und günstige Backup Software in der du alles ganz einfach einstellen kannst ;-) 

Das ist mein eigenes Project ich habe einen FileServer den ich wie oben beschrieben backup möchte, ich will keine Software ich will das mit PowerShell :) 

Link to post
vor 4 Minuten schrieb MurdocX:

Ok :-) Ich dachte ich frag mal nach. Manchmal sieht man den Wald vor lauter Bäumen nicht. 

Alles gut,

ich kann die Backup Einstellungen alle per Klicks in AD machen :) das nicht das Problem, ich versuche aktuell mehr und mehr mich auf PowerShell um zustellen und daher baue ich mir das komplette System über PowerShell only auf :) und wenn ich nicht weiterkomme frag ich nach :) 

 

dank dir aber ^^ wenn du mir die Lösung in PowerShell geben kannst nehme ich die auch haha

Link to post
vor 1 Stunde schrieb congeries:

ich kann die Backup Einstellungen alle per Klicks in AD machen :) das nicht das Problem

Was hat Backup mit AD zu tun?

 

Aber mehrere Schedules für verschiedene Bestände in einer Policy (und es gibt im WSB nur eine Policy pro ausführenden Server) halte ich für ein Gerücht. Deswegen wird es auch per PowerShell nicht klappen, sondern Du musst, wie bereits von anderen angedeutet, jeden Zeitplan auf dem jeweiligen Server unabhängig von den anderen eintragen...

Link to post
vor 10 Minuten schrieb cj_berlin:

Was hat Backup mit AD zu tun?

 

Aber mehrere Schedules für verschiedene Bestände in einer Policy (und es gibt im WSB nur eine Policy pro ausführenden Server) halte ich für ein Gerücht. Deswegen wird es auch per PowerShell nicht klappen, sondern Du musst, wie bereits von anderen angedeutet, jeden Zeitplan auf dem jeweiligen Server unabhängig von den anderen eintragen...

Okay, 
hast du ein beispiel? wie 

Link to post
vor 13 Minuten schrieb congeries:

hast du ein beispiel? wie 

 

Wir erwarten hier eigentlich, dass Du als Erstes einen eigenen Versuch unternimmst, eine gestellte Aufgabe zu lösen. Erst wenn Du damit nicht weiterkommst, solltest Du andere um Hilfe bitten.  ;-) 

 

vor 3 Stunden schrieb congeries:

was meinst du damit?

Ein Windows-Feature zu installieren, sollte ja üblicherweise nur genau ein einziges Mal nötig sein. Das Gleiche würde ich für die Anlage eines entsprechenden Kontos annehmen. 

 

vor 3 Stunden schrieb congeries:

War auch so gedacht, aber dann kam mir der Gedanke, dass ich diese Scripts vom FileServer aus starten müsste oder sehe ich das falsch? 

Das war die Idee. ;-) 

 

Unabhängig von allem vorher gesagten muss ich zugeben, dass ich keine Erfahrung mit dem Windows-Backup habe. Ich würde aber erwarten, dass das Backup auch ohne Script in der Lage ist, einem eingestellten Zeitplan entsprechend, ein Backup durchzuführen. Also quasi "Set it and forget it". Also Dein Enthusiasmus, PowerShell zu lernen, in allen Ehren, aber eventuell hast Du Dir einfach ein etwas unpassendes Projekt zum Üben ausgesucht. ;-) 

 

Hast Du denn noch konkrete Fragen, die hier in Scripting-Unterforum gehören?

Link to post
vor 15 Minuten schrieb BOfH_666:

 

Wir erwarten hier eigentlich, dass Du als Erstes einen eigenen Versuch unternimmst, eine gestellte Aufgabe zu lösen. Erst wenn Du damit nicht weiterkommst, solltest Du andere um Hilfe bitten.  ;-) 

 

 

 

Wenn du die 1. Nachricht schaust habe ich dort meine Idee gepostet danke.

vor 18 Minuten schrieb BOfH_666:

 

 

Unabhängig von allem vorher gesagten muss ich zugeben, dass ich keine Erfahrung mit dem Windows-Backup habe. Ich würde aber erwarten, dass das Backup auch ohne Script in der Lage ist, einem eingestellten Zeitplan entsprechend, ein Backup durchzuführen. Also quasi "Set it and forget it". Also Dein Enthusiasmus, PowerShell zu lernen, in allen Ehren, aber eventuell hast Du Dir einfach ein etwas unpassendes Projekt zum Üben ausgesucht. ;-) 

 

Hast Du denn noch konkrete Fragen, die hier in Scripting-Unterforum gehören?

 

 

Unabhängig das ich nicht verstehe was dein Anliegen hier ist, abgesehen von Nachrichten schreiben die keinen Bezug zur 1. Nachricht und meinen beiden Fragen haben.

 

Ich werde versuchen die Scripte so zuschreiben das, dass eine:

Ich das erste Script auf dem FileServer laufen lassen, mit dem Ziel 192.168.1.6

das zweite Script auf dem 192.168.1.6, mit dem Ziel 192.168.1.7

und das dritte (letzte) vom 192.168.1.7, mit dem Ziel 192.168.1.8

 

so habe ich auf jedem Server nur ein wbpolicy und das sollte gehen.

 

Dann habe ich nur drei Dinge heraus zufinden 

 

- Datetime wie ich das hinzufüge

- IpAdressen anpassen bzw. die jeweiligen Ordner

- das löschen der Daten im Ordner nach dem transferieren

 

dazu steht ja oben etwas, wenn du dazu beispiele hast dann freue ich mich diese zu lesen :) ansonsten frage ich mich gerade nur " was du mit deiner Antwort bezwecken willst"

Link to post
vor einer Stunde schrieb congeries:

Datetime wie ich das hinzufüge

Dazu hatte ich Dir in meiner ersten Antwort geantwortet.

 

vor einer Stunde schrieb congeries:

IpAdressen anpassen bzw. die jeweiligen Ordner

Wie sollen wir Dir dabei helfen?

 

vor einer Stunde schrieb congeries:

das löschen der Daten im Ordner nach dem transferieren

Zum Löschen kann man in PowerShell Remove-Item benutzen. 

Link to post
vor 10 Minuten schrieb congeries:

Ja und ich um ein Beispiel gebeten da ich das nicht ganz verstanden habe :)

Du darfst gern das ein oder andere selbst herausfinden und Dir anlesen. Es ist nicht möglich, Dir hier im Rahmen eines Forums die Grundlagen von Scripting im Allgemeinen, bzw. von PowerShell im Speziellen beizubringen. Das meinte ich mit "Wir erwarten hier eigentlich, dass Du als Erstes einen eigenen Versuch unternimmst, eine gestellte Aufgabe zu lösen."

 

Nur in den seltensten Fällen, bist Du mit einer gestellten Aufgabe wirklich der Erste. Es gibt fast immer jemanden, der die Aufgabe schon gelöst hat und das auch geteilt hat. Es schadet also nicht, einfach mal seine favorisierte Suchmaschine zu nutzen, um sich über ein Thema schlau zu machen.

 

$Heute = Get-Date
if ($Heute.DayOfWeek.value__ -eq 0) {
    'Heute ist Sonntag'
}
else {
    'Heute ist kein Sonntag'
}

 

  • Like 1
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...