ahsenden
Goto Top

Ordner Umbenennen +heutiges Datum

Hallo zusammen,

Ich muss für eine tagliche Außerhaussicherrung auf Externe Festplatten immer folgendes manuell ausführen:

  • Löschen des Ordners "Backup-extern_20170201" (datum ist immer älter als das aktuelle)
  • umbenennen des Ordners "Backup-extern" in "Backup-extern_20170802 (heutiges datum)
  • neuerstellen des Ordners "Backup-extern"
  • Freigabe mit schreibberechtigung für "jeder" auf den Ordner "Backup-extern"

nun ich dachte mir das muss auch mit Powershell gehen und habe angefangen mich schlau zu machen.

Ordner Löschen
remove-item E:\Backup-extern_*
kein Problem löscht mir alle Ordner mit Backup-extern_
Umbennen geht mit
rename-item E:\Backup-extern
hier weiss ich leider nicht wie ich das heutige datum dazu bekomme
neuen Ordner anlegen kein Problem mit
New-Item E:\Backup-extern -type directory
für die Ordnerfreigabe habe ich leider noch nichts gefunden. nur für Netzlaufwerke.

könnt ihr mir behilflich sein?

Content-ID: 328827

Url: https://administrator.de/contentid/328827

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

132272
Lösung 132272 08.02.2017 aktualisiert um 16:22:42 Uhr
Goto Top
Zitat von @ahsenden:
Umbennen geht mit
rename-item E:\Backup-extern
hier weiss ich leider nicht wie ich das heutige datum dazu bekomme
Hier:
rename-item 'E:\Backup_Extern' -NewName "Backup_Extern_$(get-date -f 'yyyyMMdd')"  
neuen Ordner anlegen kein Problem mit
New-Item E:\Backup-extern -type directory
Geht auch weiterhin alles zusammen mit
md "E:\Backup_Extern_$(get-date -f 'yyyyMMdd')"
für die Ordnerfreigabe habe ich leider noch nichts gefunden. nur für Netzlaufwerke.
New-SmbShare
http://windowsitpro.com/powershell/managing-file-shares-windows-powersh ...
(gwmi win32_share -list).Create("E:\Ordner",'TestShare',0)

Geht aber auch problemlos alles per Batch wenn man das wollte:
Ordner mit Datum erstellen:
md "E:\Backup_Extern_%date:~-4%%date:~3,2%%date:~0,2%"  
Freigabe erstellen
net share MeineFreigabe=E:\Test

Alles da was du brauchst face-smile

Gruß
ahsenden
ahsenden 08.02.2017 um 16:42:09 Uhr
Goto Top
Vielen Dank das Bringt mich schoneinmal ein ganzes Stück weiter.

werde mich dann morgen mal in die Freigabe-problematik einlesen.
der Rest klappt schon !
ahsenden
ahsenden 09.02.2017 um 09:19:04 Uhr
Goto Top
ich hatte wohl bei meinen überlegungen einen kleinen denkfehler.

ich brauche nicht das aktuelle DAtum sondern das änderungsdatum der neusten Datei in einem Ordner

$dest ='e:\'  
$dest2 ='e:\backup-extern'  
$folderdate = Get-ChildItem -Path $dest | SELECT CreationTime | Format-table -AutoSize;
rename-item -path "$dest\Backup-extern" -newname "$dest\Backup-extern_$folderdate"  

leider funktioniert das nicht.
könnt ihr mir bitte noch mal auf die Sprünge helfen?
132272
Lösung 132272 09.02.2017 aktualisiert um 09:27:28 Uhr
Goto Top
Zitat von @ahsenden:
ich brauche nicht das aktuelle DAtum sondern das änderungsdatum der neusten Datei in einem Ordner
$dest = 'e:\Backup-exterm'  
$date = gci $dest | ?{!$_.PSIsContainer} | sort LastWriteTime -Desc | Select -First 1 | %{$_.LastWriteTime.toString("yyyyMMdd")}  
ahsenden
ahsenden 09.02.2017 um 12:17:43 Uhr
Goto Top
Vielen Dank das Funktioniert.

Ich ahbe noch eine Frage zu der Freigabe des Ordners.
Dazu ersteinmal etwas Hintergrundinfos:
  • Der Ordner liegt auf einer Externen Festplatte
  • Die Festplatte ist an einem Hyper-V Server angeschlossen
  • Dieser Hyper-V ist nicht in der Domäne!

mein Script sieht momentan so aus:
#Hier wird der Pfad der Externen HDD angegeben
$dest = 'f:\'  
#hier wir der Pfad des aktuellen Backup-extern verzeichniss angegeben
$dest2 = 'f:\backup-extern'  
#hier wird das änderungsdatum der neusten Datei im Ordner Backup-extern ausgelesen
$date = gci $dest2 | ?{!$_.PSIsContainer} | sort LastWriteTime -Desc | Select -First 1 | %{$_.LastWriteTime.toString("yyyyMMdd")}  
#alle Ordner mit "Backup-extern_" werden ohne Nachfrage gelöscht 
remove-item $dest\Backup-extern_* -recurse
#der aktuelle Ordner Backup-extern wird umbennant in Backup-extern_$date
rename-item -path "$dest\Backup-extern" -newname "$dest\Backup-extern_$date"  
#Ein neuer Ordner BAckup-extern wird angelegt
New-Item $dest\Backup-extern -type directory
#die Freigabe Backup-Extern wird gelöscht
net share Backup-extern /delete
#Der Ordner Backup-extern wird für "Jeder" Freigegeben 
net share backup-extern=$dest2 /GRANT:Jeder`,FULL

die Problematik besteht jetzt noch darin das das Script mir den Ordner zwar freigibt und auch die Berechtigungen für "Jeder" auf vollzugriff setzt,
aber den Ordner nicht für "Jeder" Frei gibt
Siehe fotos
mit ICACLS habe ich es bisher auch nicht hinbekommen.
Jemand eine Idee?
freigabe.2
freigabe
132272
132272 09.02.2017 aktualisiert um 12:44:57 Uhr
Goto Top
die Problematik besteht jetzt noch darin das das Script mir den Ordner zwar freigibt und auch die Berechtigungen für "Jeder" auf vollzugriff setzt,
aber den Ordner nicht für "Jeder" Frei gibt
?? im Bild ist doch alles richtig!
Ich glaube du verstehst das Jeder nicht. Jeder bedeutet nicht "jeder ohne jegliches Passwort" in dem Sinne sondern nur alle Accounts die auf diesem Rechner existieren (da keine Domäne) bzw. durch eine Gruppenmitgliedschaft das Recht haben auf den Rechner zuzugreifen..
Zusätzlich sind die nachgeschalteten NTFS ACLs ebenso relevant für den Zugriff auf eine Freigabe!
ahsenden
ahsenden 09.02.2017 um 13:24:34 Uhr
Goto Top
ja das habe ich schon verstanden,

nur bisher gehe ich halt hin und gebe den Ordner Manuell für "jeder ohne jegliches Passwort" manuell frei.
Das Freigegeben Verzeichnis wird über den Tag verteilt von Mehreren Personen gefüllt. ich möchte nicht für jeden einen User anlegen.
ich dachte das ich das auch über Powershell bewerkstelligen kann.
Dann muss ich wohl doch den umweg über ein Netzwerklaufwerk nehmen.
132272
132272 09.02.2017 aktualisiert um 13:29:48 Uhr
Goto Top
Zitat von @ahsenden:
nur bisher gehe ich halt hin und gebe den Ordner Manuell für "jeder ohne jegliches Passwort" manuell frei.
Das "null Password" musst du aber in der lokalen Sicherheitsrichtlinie geändert haben denn per Default ist das so nicht möglich. Auch nicht nur durch das Jeder face-wink, denn jeder bedeutet hier nicht jeder.
Das Freigegeben Verzeichnis wird über den Tag verteilt von Mehreren Personen gefüllt. ich möchte nicht für jeden einen User anlegen.
ich dachte das ich das auch über Powershell bewerkstelligen kann.
s.o. Umstellung das man sich ohne Passwort an einem Server anmelden kann nur global per Sicherheitsrichtlinie (secpol.msc).
ahsenden
ahsenden 09.02.2017 um 13:33:45 Uhr
Goto Top
Ich habe das System von meinem Vorgänger so übernommen.
mir ist nicht bekannt das dort was geändert wurde

nun gut ich werde mir die Sicherheitsrichtlinien mal zu gemüte führen.
132272
132272 09.02.2017 um 13:39:53 Uhr
Goto Top
First, you'll need to set go to Administrative Tools and open Local Security Policy.  Next, you'll need to go to Local Policies -> Security Options.  There, you'll find a key called "Network Access:  Let Everyone permissions apply to anonymous users".  Double-click and enable this setting.  This will allow anonymous (unauthenticated users) to part of the Everyone group.  Next, you'll need to do one of two things.  You can either navigate to "Network Access: Shares that can be accessed anonymously" and add the name of the share everyone will need access to, limiting anonymous access to that purpose, or you'll need to find the key "Network Access:  Restrict anonymous access to Named Pipes and Shares" and disable it, allowing anonymous access to a lot more areas of your server. 
ahsenden
ahsenden 09.02.2017 um 13:48:38 Uhr
Goto Top
also der Punkt Netzwerkzugriff: Die Verwendung von "Jeder"-Berechtigungen für Anonyme Benutzer ermöglichen" steht auf deaktiviert.

das würde bedeuten das das eigentlich nicht funktionieren sollte oder?
132272
132272 09.02.2017 aktualisiert um 14:01:04 Uhr
Goto Top
Zitat von @ahsenden:

also der Punkt Netzwerkzugriff: Die Verwendung von "Jeder"-Berechtigungen für Anonyme Benutzer ermöglichen" steht auf deaktiviert.

das würde bedeuten das das eigentlich nicht funktionieren sollte oder?
Korrekt. Ist das so eingestellt ist die Eingabe eines Benutzernamens mit Passwort Pflicht. Steht ja unmissverständlich oben...

p.s. wir bewegen uns vom eigentlichen Thread weg. Bitte für neue Fragen auch einen neuen Thread. Danke.

Gruß