2016-12-21 2 views
0

Ich schreibe ein Skript, das durch Ordner iteriert, Teilstrings der Ordnernamen als Variablenwerte erfasst und dann durch die Protokolldateien in jedem der Ordner iterieren und einige Daten aus abrufen die Protokolldateien für die Ausgabe in eine CSV-Datei. Wo ich auf ein Problem stoße, ist die Verwendung von Get-ChildItem mit Variablen, die ich bereits gesetzt habe. Wenn ich diese Zeile von selbst laufen, macht es keinen Wert liefern:Powershell: Verwenden von Get-ChildItem mit Variablen

#running this to see the value of $files 
$files = Get-ChildItem $_.FullName $folder 

Dateien $ dann nicht einen beliebigen Wert enthalten.

Hier ist der gesamte Teil des Skripts, als Referenz und Kontext:

#get all folders from the Logs directory  
$folders = Get-ChildItem "C:\Temp\MPOS\Logs" 

#iterate through each folder 
foreach ($folder in $folders) { 

#set substrings of the folder name to variables 
$storeNumber = $folder.Name.Substring(2,3) 
$date = $folder.Name.Substring(9,7) 
#get all files from the current folder being evaluated 
$files = Get-ChildItem $_.FullName $folder 

#iterate through each file in the current folder 
foreach ($file in $files) { 

    #set substring of the file name to a variable 
    $registerNumber = $file.Name.Substring(12,4) 
    #get content of the file 
    $logfileContent = Get-Content $file 
    #look for all matches of the string "TransactionNumber" 
    $transactions = Select-String -InputObject $logfileContent -Pattern "TransactionNumber" -AllMatches 
    #count number of matches from above 
    $transactionCount = $transactions.Matches.Count 

    #below info is creating the object for the .csv 
    $transObject = New-Object PSObject 

    $transObject | Add-Member -MemberType NoteProperty -Name "StoreNumber" -Value $storeNumber 
    $transObject | Add-Member -MemberType NoteProperty -Name "Sales Date" -Value $date 
    $transObject | Add-Member -MemberType NoteProperty -Name "RegisterNumber" -Value $registerNumber 
    $transObject | Add-Member -MemberType NoteProperty -Name "Transactions" -Value $transactionCount 

    $resultsArray += $transObject 
    } 
} 

$resultsArray | Export-Csv C:\Temp\MPOS\MPOSTransactions.csv -NoTypeInformation 
+1

'Get-ChildItem $ _. FullName $ Ordner' was erreicht dies? – 4c74356b41

+0

@ 4c74356b41 - scheinbar nichts, es gibt keinen Wert. Was ich versuche zu tun, ist $ Dateien für alle Dateien, die in $ Ordner sind. Ist das sinnvoll? Ähnlich wie ich $ Ordner auf alle Ordner unter "C: \ Temp \ MPOS \ Logs" setze. Ich muss alle Dateien von jedem der Ordner in diesem Verzeichnis abrufen. Ich hoffe das ergibt Sinn. Dann würde ich jede dieser Dateien durchlaufen und Daten sammeln wollen. Ich werde meinem Code einige Kommentare hinzufügen, um zu helfen. – LilithGoddess

+1

'$ _' bedeutet" aktuelles Objekt aus der Pipeline ". Sie verwenden eine 'foreach'-Anweisung, keine' ForEach-Object'-Schleife, daher hat '$ _' keinen Wert in dem Kontext, in dem Sie versuchen, ihn zu verwenden. –

Antwort

0

Edited Code unten - geändert $ folder.FullName zu lesen - arbeiten jetzt!

$resultsArray = @() 
$folders = Get-ChildItem "C:\Temp\MPOS\Logs" 

foreach ($folder in $folders) { 

$storeNumber = $folder.Name.Substring(2,3) 
$date = $folder.Name.Substring(9,7) 
$files = Get-ChildItem $folder.FullName 

foreach ($file in $files) { 

    $registerNumber = $file.Name.Substring(12,4) 
    $logfileContent = Get-Content $file.FullName 
    $transactions = Select-String -InputObject $logfileContent -Pattern "TransactionNumber" -AllMatches 
    $transactionCount = $transactions.Matches.Count 

    $transObject = New-Object PSObject 

    $transObject | Add-Member -MemberType NoteProperty -Name "StoreNumber" -Value $storeNumber 
    $transObject | Add-Member -MemberType NoteProperty -Name "Sales Date" -Value $date 
    $transObject | Add-Member -MemberType NoteProperty -Name "RegisterNumber" -Value $registerNumber 
    $transObject | Add-Member -MemberType NoteProperty -Name "Transactions" -Value $transactionCount 

    $resultsArray += $transObject 
    } 
} 

$resultsArray | Export-Csv C:\Temp\MPOS\MPOSTransactions.csv -NoTypeInformation 
Verwandte Themen