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

Frage Entwicklung Batch & Shell

Mitglied: tray-park

tray-park (Level 1) - Jetzt verbinden

07.07.2010 um 17:21 Uhr, 4852 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
Batch & Shell
Powershell String selektieren....
gelöst Frage von mguenth83Batch & Shell4 Kommentare

Hi, Ich wollte Euch mal fragen wie Ihr das machen würdetich habe eine Liste von AD Usern mit Telefonnummer ...

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. ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...