Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Powershell Ordner auslesen

Frage Entwicklung Batch & Shell

Mitglied: calzoni83

calzoni83 (Level 1) - Jetzt verbinden

22.01.2013, aktualisiert 01.02.2013, 8875 Aufrufe, 8 Kommentare

Hallo erstmal,

ich bin anfänger im Bereich Powershell scripting und bräuchte hilfe für ein Powershell Script.

Ich habe mehrere Ordner, wo auch mehrere Unterordner existieren. Ich brauche von jedem Ordner ein bestimmten Unterordner der ausgelesen werden soll.

Beispiel
Ordner1 -> xml Ordner (nur den Ordner XML brauche ich)
-> x Ordner
-> y Ordner
-> z Ordner

Ordner2 -> xml Ordner (nur den Ordner XML brauche ich)
-> x Ordner
-> y Ordner
-> z Ordner

Ein Script habe ich soweit, nur das Problem ist, das das Script alle Unterordner ausliest.

Vielen dank

gruß calzoni
Mitglied: 106543
22.01.2013, aktualisiert um 10:43 Uhr
Hi

01.
if not $ORDNERNAME = "XML" then goto [nächten Ordner auslesen] else write-host $ORDNERNAME
Grüße
Exzellius
Bitte warten ..
Mitglied: calzoni83
22.01.2013, aktualisiert um 11:05 Uhr
danke für die schnelle Antwort.
Ich verstehe das leider nicht ganz. Ich habe so 1500 Ordner (wo jeder Ordner ein Unterordner namens xml hat und diesen brauche ich nur), woher weis er wo die Ordner liegen??? Muss ich da den $Path angeben oder wie funktioniert das???

Hier ist mein Script und wo füge ich die Bedingung ein ???

Set-StrictMode -Version "2.0"
Clear-Host

#RootPath
$Path = "C:\Users\lc\Documents\test"
$Folders = (Get-ChildItem $path)
$myfolders = Foreach($Folder in $Folders){
If($Folder.PSIsContainer -eq $True){
New-Object -TypeName Psobject -Property @{
Name = $Folder.FullName
#CountFiles = ((gci $Folder.Fullname -recurse | Where {$_.PSIsContainer -eq $False}) |Measure-Object).Count
}
}
}

#Ausgabe1
#$myFolders | sort SumFiles -descending | ForEach{
  1. "{0} {1:0.00} MB {2}" -f $($_.name),$($_.size),$($_.Sumfiles)
#}

#Ausgabe2
$myFolders | sort Name | ft -auto

#Ausgabe3 (csv-File)
$myFolders | sort SumFiles -descending | export-csv "C:\Users\LC\Documents\test1.csv" -delimiter ";"

dank nochmals

gruß calzoni
Bitte warten ..
Mitglied: 106543
22.01.2013 um 11:16 Uhr
Hi calzoni,

1. deine Fragezeichentaste scheint kaputt zu sein
2. hier im Forum (eig. in jedem Forum) gibt es sogenannte Code-Tags
siehe:
Mit < code >Quellcode< /code > kann ein beliebiger Quellcode in richtiger Formatierung (Abstände, Einrückungen usw.) angezeigt werden.

3. zu deinem Problem, ich meine, dass in der Varibale $Folder dein aktuell ausgelesener Ordner drinsteht von daher:
01.
Set-StrictMode -Version "2.0" 
02.
Clear-Host 
03.
 
04.
#RootPath 
05.
$Path = "C:\Users\lc\Documents\test" 
06.
$Folders = (Get-ChildItem $path) 
07.
$myfolders = Foreach($Folder in $Folders){ 
08.
If($Folder.PSIsContainer -eq $True){ 
09.
 
10.
if not $Folder = "XML" then goto Sprungmarke 
11.
 
12.
New-Object -TypeName Psobject -Property @{ 
13.
Name = $Folder.FullName 
14.
#CountFiles = ((gci $Folder.Fullname -recurse | Where {$_.PSIsContainer -eq $False}) |Measure-Object).Count 
15.
16.
:Sprungmarke 
17.
18.
19.
 
20.
#Ausgabe1 
21.
#$myFolders | sort SumFiles -descending | ForEach{ 
22.
 
23.
1."{0} {1:0.00} MB {2}" -f $($_.name),$($_.size),$($_.Sumfiles) 
24.
#} 
25.
 
26.
#Ausgabe2 
27.
$myFolders | sort Name | ft -auto 
28.
 
29.
#Ausgabe3 (csv-File) 
30.
$myFolders | sort SumFiles -descending | export-csv "C:\Users\LC\Documents\test1.csv" -delimiter ";"
alles ungetestet, da ich grade keine Powershel-Konsole da hab

Grüße
Exzellius
Bitte warten ..
Mitglied: calzoni83
22.01.2013 um 11:37 Uhr
Hi,
Der Pfad weg ist ja C:\Users\lc\Documents\test, dort liegen die ganzen Ordner (Ordner1, Ordner2, Ordner3) drinne und von denen die Unterordner namens XML sollen ausgelesen werden.
So wie ich das verstehe schaut er doch nach den XML Ordner nur unter C:\Users\lc\Documents\test oder?

danke nochmals für die Hilfe

gruß Calzoni
Bitte warten ..
Mitglied: 106543
22.01.2013 um 11:46 Uhr
Hi,

soweit richtig er sucht in diesem Pfad und geht alle Ordner durch.
Wenn er jetzt einen Ordner findet der NICHT XML heißt, dann springt er ans Ende der Schleife und nimmt sich den nächsten Ordner. Wenn er einen Ordner findet, der XML heißt, dann führt er deinen ganzen Quellcode aus.

Grüße
Exzellius
Bitte warten ..
Mitglied: calzoni83
23.01.2013 um 08:07 Uhr
Guten Morgen,

Ich komme damit leider nicht weiter

Set-StrictMode -Version "2.0"
Clear-Host

#RootPath
$Path = "C:\Users\lc\Documents\test"
$Folders = (Get-ChildItem $path)
$myfolders = Foreach($Folder in $Folders){
If($Folder.PSIsContainer -eq $True){

if not $Folder = "xml" then goto Sprungmarke

New-Object -TypeName Psobject -Property @{
Name = $Folder.FullName
CountFiles = ((gci $Folder.Fullname -recurse | Where {$_.PSIsContainer -eq $False}) |Measure-Object).Count
}
}
:Sprungmarke
}
}
#Ausgabe1
#$myFolders | sort SumFiles -descending | ForEach{
  1. "{0} {1:0.00} MB {2}" -f $($_.name),$($_.size),$($_.Sumfiles)
#}

#Ausgabe2
$myFolders | sort Name | ft -auto

#Ausgabe3 (csv-File)
$myFolders | sort SumFiles -descending | export-csv "C:\Users\lc\Documents\test0.csv" -delimiter ";"

Ich bekomme immer diesen fehler

Fehlende "(" nach "if" in der if-Anweisung.
Bei C:\Users\lc\Documents\Ordner auslese script.ps1:10 Zeichen:6

if <<<< not $Folder = "xml" then goto Sprungmarke

+ CategoryInfo : ParserError: (OpenParenToken:TokenId) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndParenthesisInIfStatement

Kann das sein, das ich nicht in eine IF schleife noch ein If einsetzen kann?

danke
gruß calzoni
Bitte warten ..
Mitglied: 106543
23.01.2013 um 08:15 Uhr
Hi calzoni,

doch geht ;) allerdings ist es schon ne Weile her, dass ich mit Powershell gearbeitet hab und von daher können Fehler schonmal passieren.
also
1) ich hab keine Ahnung, wie zum Teufel nochmal ne if-Selektion in Powershell ging, muss mich da iwo verschrieben haben
2) goto Sprungmarke war eher eine Verzweiflungstat, weil ich garnicht weiß ,wie Sprungmarken in Powershell verwendet werden und das soweiso schlechter Stil ist
3) verwendest du bitte Code-Tags wie oben beschrieben ?
4) hier ein neuer Versuch, probiers mal bitte aus:
01.
Set-StrictMode -Version "2.0" 
02.
Clear-Host 
03.
 
04.
#RootPath 
05.
$Path = "C:\Users\lc\Documents\test" 
06.
$Folders = (Get-ChildItem $path) 
07.
$myfolders = Foreach($Folder in $Folders){ 
08.
If($Folder.PSIsContainer -eq $True){ 
09.
 
10.
if not ($Folder = "XML"){ 
11.
goto Sprungmarke 
12.
13.
 
14.
New-Object -TypeName Psobject -Property @{ 
15.
Name = $Folder.FullName 
16.
#CountFiles = ((gci $Folder.Fullname -recurse | Where {$_.PSIsContainer -eq $False}) |Measure-Object).Count 
17.
18.
:Sprungmarke 
19.
20.
21.
 
22.
#Ausgabe1 
23.
#$myFolders | sort SumFiles -descending | ForEach{ 
24.
 
25.
1."{0} {1:0.00} MB {2}" -f $($_.name),$($_.size),$($_.Sumfiles) 
26.
#} 
27.
 
28.
#Ausgabe2 
29.
$myFolders | sort Name | ft -auto 
30.
 
31.
#Ausgabe3 (csv-File) 
32.
$myFolders | sort SumFiles -descending | export-csv "C:\Users\LC\Documents\test1.csv" -delimiter ";"
Viel Glück und freundliche Grüße
Exzellius
Bitte warten ..
Mitglied: calzoni83
01.02.2013 um 08:42 Uhr
hi,

ich habe es hinbekommen, habe einfach ein Filter gesetzt. Vielen dank nochmals für die Hilfe.

gruß calzoni
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Ordner löschen mit Ausnahme (10)

Frage von Bugger zum Thema Batch & Shell ...

Batch & Shell
Dateien im Ordner auslesen und umbennen (10)

Frage von jocheng zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Ordnername auslesen und verwenden (3)

Frage von zamsi7 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...