首页 文章

Powershell:将Get-ChildItem与变量一起使用

提问于
浏览
0

我正在编写一个脚本,它将遍历文件夹,将文件夹名称的子字符串作为变量值,然后遍历每个文件夹中的日志文件,并从日志文件中获取一些数据,以便输出到.csv文件 . 我遇到问题的地方是使用Get-ChildItem和我已设置的变量 . 当我单独运行此行时,它不提供任何值:

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

$ files不包含任何值 .

以下是脚本的整个部分,供参考和上下文:

#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 回答

  • 0

    下面编辑的代码 - 更改为读取$ folder.FullName - 立即工作!

    $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
    

相关问题