Вывести текстовый файл для идентификации управляемых файлов в 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