Вывести текстовый файл для идентификации управляемых файлов в PowerShell

Я искал помощи по этому вопросу в течение нескольких часов, но не повезло. Мой скрипт отслеживает папку для файлов старше 12 минут, заканчивающихся на ".tmp". Затем он удаляет ".tmp". Эта часть работает правильно.

Я хотел бы, чтобы скрипт выводил текстовый файл, содержащий имена файлов, которые были переименованы. С помощью сценария ниже, текстовые документы пусты.

#Computer name from Description
$ComputerName = Get-WmiObject -Class Win32_OperatingSystem | Select Description
$ComputerName = "$ComputerName".split("}")
$ComputerName = "$ComputerName".split("=") | Select-Object -Last 1
$ComputerName = "$ComputerName".split(" ") | Select-Object -First 1

#$ComputerName = $env:computername
Write-Host "This is the computer name: $ComputerName"

$c1Output = 'E:\' + $ComputerName + '\Capture One Session\Output\Market\'

get-childitem -Path "$c1Output" -Filter *.tmp |
    where-object {$_.LastWriteTime -lt (get-date).AddMinutes(-12)} | 
    rename-item -newname { $_.name.substring(0,$_.name.length-4) }
    out-file \\server\Report.txt

Это должно быть легко понять, однако я все еще новичок в PowerShell.

Спасибо!

1 ответ

Решение

Ваша проблема здесь:

get-childitem -Path "$c1Output" -Filter *.tmp |
    where-object {$_.LastWriteTime -lt (get-date).AddMinutes(-12)} | 
    rename-item -newname { $_.name.substring(0,$_.name.length-4) }
    out-file \\server\Report.txt

Вам нужно сделать два изменения: добавить -Passthru переключитесь на ваш звонок Rename-Itemи передайте результат вашему Out-File:

get-childitem -Path "$c1Output" -Filter *.tmp |
    where-object {$_.LastWriteTime -lt (get-date).AddMinutes(-12)} | 
    rename-item -newname { $_.name.substring(0,$_.name.length-4) } -Passthru |
    out-file \\server\Report.txt
Другие вопросы по тегам