
nv_it
Members-
Gesamte Inhalte
19 -
Registriert seit
-
Letzter Besuch
Letzte Besucher des Profils
Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.
Fortschritt von nv_it
-
Powershell Skript zum Löschen von Dateien die älter sind als X Tage
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Moin, danke schonmal für die Tipps und Vorschläge Ich war die Tage leider etwas außer gefecht und werde mir die "bessere Version" heute mal anschauen. -
Powershell Skript zum Löschen von Dateien die älter sind als X Tage
nv_it hat einem Thema erstellt in: Windows Forum — Scripting
Hallo zusammen, ich baue aktuell mal wieder ein Skript mit Powershell welches zum einen eine Bestimmte Gerätesammlung aus dem Active Directory ausliest. Für jeden Computer in dieser Liste soll in bestimmten Pfaden sollen Dateien die älter sind als X Tage gelöscht werden. Außerdem soll mit dem Skript auf einem Server in verschiedenen Pfaden ebenfalls Dateien die älter sind als X Tage gelöscht werden. Ich habe das ganze bisher so realisiert was auch an sich gut funktioniert: $MDE = (Get-ADComputer -Filter "Name -like 'COMPUTER'").Name $SourceMDE1 = "\\$PC\c$\XXX\XXX\" $SourceMDE2 = "\\$PC\c$\XXX\XXX\" $SourceMDE3 = "\\$PC\c$\XXX\XXX\" $SourceFVS1 = "\\server\c$\XXX\XXX\" $SourceFVS2 = "\\server\c$\XXX\XXX\" $SourceFVS3 = "\\server\c$\XXX\XXX\" $SourceFVS4 = "\\server\c$\XXX\XXX\" $LogSourceMDE = "\\server\c$\XXX\XXX\" $LogSourceFVS = "\\server\c$\XXX\XXX\" $Days1 = 10 $Days2 = 30 $ext = "*.bat","*.cat","*.txt","*.ini","*.zip","*.pdf","*.log" $logMDE = "$LogSourceMDE$(get-date -format yymmddHHmmss).txt" $logFVS = "$LogSourceFVS$(get-date -format yymmddHHmmss).txt" $DateBeforeXDays1 = (Get-Date).AddDays(-$Days1) $DateBeforeXDays2 = (Get-Date).AddDays(-$Days2) ForEach ($PC in $MDE) { start-transcript $logMDE write-host "--------------------------------------------------------------------------------------" write-host "Löschen aller Dateien ($ext) im Ordner $SourceMDE1 $SourceMDE2 $SourceMDE3 die älter sind als $Days1 und $Days2 Tage." write-host "--------------------------------------------------------------------------------------" get-childitem $SourceMDE1\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays1 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} get-childitem $SourceMDE2\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays1 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} get-childitem $SourceMDE3\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays1 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} stop-transcript } start-transcript $logFVS write-host "--------------------------------------------------------------------------------------" write-host "Löschen aller Dateien ($ext) im Ordner $SourceFVS1 $SourceFVS2 $SourceFVS3 $SourceFVS4 die älter sind als $Days1 und $Days2 Tage." write-host "--------------------------------------------------------------------------------------" get-childitem $SourceFVS1\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays2 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} get-childitem $SourceFVS2\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays2 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} get-childitem $SourceFVS3\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays2 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} get-childitem $SourceFVS4\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays1 -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose} stop-transcript Jetzt hab ich leider noch ein Problem, und zwar in einem der Pfade (SourceFVS2) sind Unterordner die ich auch nach dem gleichen Schema mit löschen möchte. Steh gerade etwas auf dem Schlauch welchen Parameter ich ändern muss damit er in diesem Pfad die Unterordner mit löscht. Ansonsten bin ich allgemein offen für Verbesserungsvorschläge Vielen Dank im voraus. Gruß Niklas -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Für unsere Zwecke reicht meine Variante vollkommen aus liest genau die Rechner aus die es soll. -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
ja ich weiß, könnte man in ein Skript bauen aber für unseren Fall ist es separat besser, da wir nicht jedes mal wenn wir die Startzeiten kontrollieren wollen auch gleich die Dateien kopieren möchten. Zu den Kommentaren, ist mit Absicht so einfach beschrieben -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Gerne, es sind 2 Skripte: Skript zum Kopieren von einer Datei von mehreren bestimmten Rechnern im Active Directory: #liest Rechner aus dem Active Directory $Rechner = (Get-ADComputer -Filter "Name -like 'XX*-M'-or Name -like 'YY*-S'").Name #Kopiert Datei von Rechner zu Share ForEach ($PC in $Rechner) { Copy-Item -Path "\\Pfad\zur\Quell\Datei\Datei.ini" -Destination "\\Server\Share\$PC.Datei.ini" -ErrorAction Ignore } Skript zum Abfragen der letzten Startzeit von mehreren bestimmten Rechnern im AD: #liest Rechner aus dem Active Directory $Rechner = (Get-ADComputer -Filter "Name -like 'XX*-M'-or Name -like 'YY*-S'").Name #fragt die letzte Startzeit der Rechner ab ForEach ($PC in $Rechner) { (Get-CimInstance -ClassName CIM_OperatingSystem -ComputerName $PC -ErrorAction Ignore| Select-Object -Property LastBootUpTime, PSComputerName) } Da bei meinem Fall zu jedem Rechner meist ein Computerobjekt existiert was nicht erreichbar ist habe ich noch das -ErrorAction Ignore mitgegeben. -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Hi, nochmal vielen lieben Dank für die Hilfe! Skript funktioniert, Thema kann als gelöst markiert werden. Kann ich das auch selbst, wenn ja wo? -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Okay danke, das hilft mir schonmal weiter jetzt habe ich nochmal eine andere Frage zu meinem LastBootUpTime, das Skript sieht aktuell so aus: $Rechner = (Get-ADComputer -Filter 'Name -like "XX*-M"').Name ForEach ($PC in $Rechner) { (Get-CimInstance -ClassName CIM_OperatingSystem -ComputerName $PC | Select-Object -Property LastBootUpTime) } das gibt mir schonmal brav die Startzeiten der Rechner aus, wie kann ich hier jetzt einstellen das mir das Skript zusätzlich den Rechnernamen zur jeweiligen Startzeit mitgibt? -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Moin, danke schonmal für die vielen hilfreichen Antworten und Tipps. Bin etwas weitergekommen, beide Skripte funktionieren jetzt soweit das wenn ich die Rechner einzelnd mit in das Skript (in die Variable) schreibe. $PCListe = @('PC1','PC2') ForEach ($PC in $PCListe) { Copy-Item -Path \\$PC\c$\xxx\xxx\xxx.ini -Destination "\\server\xxx\xxx\$PC.xxx.ini" } Wenn ich allerdings versuche da das Get-ADComputer mit einzubauen erhalte ich aktuell noch Fehler: $PCListe = Get-ADComputer -Filter 'Name -like "xx*-S"' -Properties Name | FT Name ForEach ($PC in $PCListe) { Copy-Item -Path "\\$PC\c$\xxx\xxx\xxx.ini" -Destination "\\server\xxx\xxx\$PC.xxx.ini" } Fehler: Der Pfad "\\Microsoft.PowerShell.Commands.Internal.Format.GroupStartData\\XX\xx.ini" kann nicht gefunden werden... in Zeile 5 Zeichen 5 Copy-Item.... Also er sucht den Pfad garnich nach dem Rechnernamen. Bin gerade etwas ratlos. Wenn ich mir einfach mal die Variable $PCListe ausgeben lasse sehe ich aber das diese richtig gefüllt ist. -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
nein ich habe das jetzt Testweise mit 2 Rechnern gemacht. wenn ich das bei jedem Rechner einzelnd abfrage funktioniert es einwandfrei, wenn ich jedoch beide rechner in die Variable schreibe klappt es nicht, da scheint er schon ab dieser Zeile ein Problem zu haben: $os = Get-WmiObject -ComputerName $Rechner -Class win32_operatingsystem -
Mit Powershell Datei von mehreren Rechnern kopieren + LastBootUpTime von mehreren Rechner abfragen
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Hi, werde ich tun, danke schonmal. Zur WMI-Abfrage habe ich es einfach so probiert: $Rechner = "PC-XY.FQDN","PC-Z.FQDN","PC-USW.FQDN" -
Hallo zusammen, ich habe mal wieder zwei kleine Aufgaben die ich mit Powershell realisieren möchte. Folgende Situation: Ich habe ca. 145 Rechner von denen ich eine Datei kopieren will, die bei allen Rechnern im gleichen Pfad liegt. Ich hab das soweit schonmal mit dem Copy-Item gebaut jedoch kommt es mir so vor als würde es auch schöner gehen als jeden Rechner in eine eigene Variable zu packen. Da die kopierten Dateien im gleichen Share landen und jeweils mit Rechnername benannt werden sollen. Hier mal mein Ansatz: $Rechner1="\\XXX-X" $Speicherort1="\\SERVER\SHARE\Unterordner\$Rechner1.Datei.ini" Copy-Item -Path "$Rechner1.FQDN\c$\xxx\xxx\Datei.ini" -Destination $Speicherort1 $Rechner2="\\YYY-Y" $Speicherort2="\\SERVER\SHARE\Unterordner\$Rechner2.Datei.ini" Copy-Item -Path "$Rechner2.FQDN\c$\xxx\xxx\Datei.ini" -Destination $Speicherort2 ... ... Wäre toll wenn mir da jemand einen evt. besseren Weg zeigen kann. Zusätzlich dazu muss ich ein separates Skript erstellen mit dem ich die LastBootUpTime von mehreren Rechnern abfrage. Dazu habe ich auch etwas geschrieben was mir allerdings immer nur von einer Maschine die LastBootUpTime liefert: $Rechner = "PC-XY.FQDN" $os = Get-WmiObject -ComputerName $Rechner -Class win32_operatingsystem $os.ConvertToDateTime($os.LastBootUpTime) bei diesem Skript würde ich nach meinem Verständnis einfach mehrere Rechner in die Variable mit reinschreiben jedoch kommt dann der Fehler: "Get-WmiObject : Der RPC-Server ist nicht verfügbar. 0x8007068A" Wenn ich den Rechner jedoch einzelnd abfrage funktioniert das Skript. Kann mir da evt. jemand sagen wo der Fehler liegt? Vielen Danke schon jetzt für die Hilfe Gruß Niklas
-
Powershell Skript zum Setzen verschiedener Computereinstellungen (Name, Domäne, IP, usw.)
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Hi nochmal, der Beitrag kann geschlossen werden. Habe mir die Grundlagen soweit beigebracht dass ich das Skript erfolgreich schreiben konnte. Vielen Dank für die Hilfestellungen -
Powershell Skript zum Setzen verschiedener Computereinstellungen (Name, Domäne, IP, usw.)
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
okay, dann schonmal danke für die Tipps ;) ich versuche mich jetzt trotzdem erstmal ein bisschen mit Powershell. Kann mir evt. jemand von euch sagen wenn ich eine csv Datei importiere, die dann in einer Variable speicher, wie ich dann aus dieser Datei in der Tabelle eine bestimmte Zeile auslesen kann? -
Powershell Skript zum Setzen verschiedener Computereinstellungen (Name, Domäne, IP, usw.)
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Ähm, bisher hab ich noch nicht viel mit Sysprep gemacht, in meinem Verständnis kann ich damit ein angepasstes Windows Image erstellen z.B. eigene Software mit einpflegen, und z.B. mit generalize Informationen löschen. Klär mich doch bitte auf damit ich dich auch verstehe -
Powershell Skript zum Setzen verschiedener Computereinstellungen (Name, Domäne, IP, usw.)
nv_it antwortete auf ein Thema von nv_it in: Windows Forum — Scripting
Moin, @zahni Also vom Windows Image her ist ja alles schon fertig, das heißt die Rechner werden alle mit dem gleichen Stand installiert. Was ich mit dem Skript dann machen will ist für jeden Markt die jeweiligen Einstellungen setzen, wie Computername, Domänenbeitritt, Ip-Adresse, Gateway, DNS usw.. Wenn das das ist was du mit Sysprep gemeint hast.