Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PowerShell - Nach Dateigröße selektieren

Mitglied: tray-park

tray-park (Level 1) - Jetzt verbinden

07.07.2010 um 17:21 Uhr, 4875 Aufrufe, 8 Kommentare

Exchange 2010 Standard
Server 2008 R2 Enterprise

Hi,

ich schreibe gerade ein kleines PowerShell Skipt.

Dieses soll die Namen und Größen der Dateien aus mehreren Unterordnern ausgeben, die z.B. kleiner als 500 MB sind und diese dann samt Ordner auf ein anderes Laufwerk verschieben.
01.
$pfad=Get-ChildItem *.* -Recurse | select-object name, length | format-list | where name -lt 524288000
Der ganze Move-Item Vorgang folgt dann später.

Wisst ihr, wie ich hier gescheit selektieren kann?

Freue mich über jede Rückmeldung.

Grüße



Tray
Mitglied: LotPings
07.07.2010 um 21:05 Uhr
Hallo Tray,
gci *.* -recurse | foreach {if (!$_.psiscontainer -And $_.length -lt '10000') {write-host $_.length $_.fullname $_.PSDrive $_.DirectoryName.substring(2) $_.BaseName $_.Extension} }
Statt Write-Host bau halt deinen Befehl zusammen.

Gruß
LotPings

Edit: noch ein paar Anmerkungen
  • Damit der gci -recurse funktioniert nimm bitte nur "*" als Auswahl, mit "*.*" geht es nicht.
  • Wenn du später in der Pipe auf den vollen Dateinamen zugreifen willst, darfst du ihn nicht vorher wegselektieren.

Wenn du in der Pipe noch mehr anstellen willst, kannst du das z.Bsp. so machen:
gci * -recurse | where -filterscript {!$_.psiscontainer -And $_.length -lt '500000000'} | ft -auto
Bitte warten ..
Mitglied: tray-park
08.07.2010 um 08:30 Uhr
Hi,

danke für die rasche Antwort. Das werde ich gleich versuchen.

Wo bekomme ich eigentlich Infos zu den ganzen möglichen Methoden her?
Also ich meine diese
01.
.....$_.psiscontainer, $_.length .....
MS Technet berichtet ja nur von den CMDlet´s
Bitte warten ..
Mitglied: tray-park
08.07.2010 um 10:39 Uhr
Coole Sache.

Ich hab jetzt statt dem Write-Host und den folgenden Anweisungen versucht die selektierten Dateien zu verschieben.
01.
	gci $quelle * -recurse | foreach { 
02.
		if (!$_.psiscontainer -And $_.length -lt '10000')  
03.
04.
			# Write-Host $_.length $_.fullname 
05.
			$daten=Get-ChildItem $quelle * -Recurse 
06.
			Move-Item $daten -Destination $ziel 
07.
08.
		else 
09.
10.
			Write-Host "Hat nicht geklappt" 
11.
12.
	}	
Das funktioniert aber leider nicht so wirklich. Irgendwie muss ich ja die Selektion in ner Variablen einlesen und der Move-Item Anweisung übergeben.

Wie bekomm ich das hin?
Bitte warten ..
Mitglied: LotPings
08.07.2010 um 10:42 Uhr
Zitat von tray-park:
MS Technet berichtet ja nur von den CMDlet´s
Eins davon hilft dir dabei: Get-Member
Ans Ende der Pipe gehängt, zeigt es dir Methoden und Eigenschaften an.

Gruß
LotPings
Bitte warten ..
Mitglied: LotPings
08.07.2010 um 11:36 Uhr
Zitat von tray-park:
Wie bekomm ich das hin?
Indem du als Quelle nicht zwei unabhängige Werte angibst, sondern einen
Ich glaube du hast nicht verstanden was der foreach macht.
Der verarbeitet doch jedes aus der Pipe kommende Objekt separat.
Deine Zeile 5 fängt aber wieder von vorne an.
Den kompletten Namen des Quellobjekts hast du doch in $_.fullname, wenn du jetzt einen Teil-Quell-Pfad mit in den Zielpfad einbauen willst, habe ich hier 2 alternative methoden eingebaut.
(Ausserdem zeige ich testhalber den Move nur mit Write-Host an)
01.
$Quelle = "D:\Test\2009\" 
02.
$ZielBasis = "X:" 
03.
gci $Quelle -recurse | foreach { 
04.
  if (!$_.psiscontainer -And $_.length -lt '10000')  
05.
06.
#    $Ziel = $ZielBasis + $_.DirectoryName.substring(2) 
07.
     $Ziel = $_.FullName.replace($Quelle ,$ZielBasis + "\") 
08.
 
09.
    Write-Host Move-Item $_.FullName -Destination $Ziel 
10.
11.
  else 
12.
13.
    Write-Host $_.length $_.FullName "Entspricht nicht den Kriterien" 
14.
15.
}
Gruß
LotPings

PS: Der Text im Else-Zweig war Unsinn.
Bitte warten ..
Mitglied: tray-park
09.07.2010 um 09:26 Uhr
Die Ausgabe zeigt mir die richtigen Pfade, aber nach dem Löschen von Write-Host funktioniert der Move nicht.
Bitte warten ..
Mitglied: LotPings
09.07.2010 um 10:36 Uhr
Hallo tray,

es wäre schon hilfreich wenn du die Fehlermeldung weitergibst.
Man kann/will nicht immer alle Aspekte in der eigenen Umgebung testen.
Und warum soll ich mir mehr Mühe beim Finden des Fehlers machen als du selbst?

Versuche mal diese Version, sie erstellt ein nicht vorhandene Zielverzeichnis vor dem Move:
01.
$Quelle = "D:\Test\2009\" 
02.
$ZielBasis = "D:\Test\2009.x\" 
03.
gci $Quelle -recurse | foreach { 
04.
  if (!$_.psiscontainer -And $_.length -lt '100')  
05.
06.
     $Ziel = $_.DirectoryName.replace($Quelle ,$ZielBasis ) 
07.
     if (!(test-path $Ziel)) {mkdir $Ziel} 
08.
#     Write-Host Move-Item -path $_.FullName -Destination $Ziel 
09.
     Move-Item -path $_.FullName -Destination $Ziel 
10.
11.
}
Gruß
LotPings
Bitte warten ..
Mitglied: tray-park
09.07.2010 um 10:47 Uhr
Ich versuchs mal.

Ich hätte ne Fehlermeldung gepostet, wenn es eine gäbe.
Bitte warten ..
Ähnliche Inhalte
Mac OS X

Finale Dateigröße ohne Entpacken ermitteln

gelöst Frage von pelzfruchtMac OS X3 Kommentare

Moin, ich hab hier ein 27,1 GB großes *.bz2 Archiv. Das Problem: Wenn ich das Archiv entpacke könnte mich ...

Batch & Shell

Dateigröße und Änderungsdatum auslesen

Frage von michi-ffmBatch & Shell6 Kommentare

Hallo zusammen, ich habe folgendes Problem, vielleicht kann mir einer ja weiterhelfen. :) Dieses Skript funktioniert schon einmal wunderbar, ...

Microsoft Office

Excel Liste mit Datenüberprüfung anlegen und anschließend selektieren ????

gelöst Frage von speedy132Microsoft Office10 Kommentare

Hallo, ich habe in Excel eine Mitarbeiterliste erstellt. Diese einen Namen vergeben und über Datenüberprüfung - Liste diese angesprochen. ...

Verschlüsselung & Zertifikate

Änderung der Dateigröße bei wiederholtem Download scheinbar nicht zu erklären

Frage von fury110Verschlüsselung & Zertifikate1 Kommentar

Hi, habe das OpenOffice-Paket von der offiziellen Webseite heruntergeladen und versucht die Hashwerte zu verifizieren. Das klappte nicht für ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...