输出文本文件以识别 PowerShell 中被操纵的文件
Output text file to Identify Manipulated Files in 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 还是个新手。
谢谢!
您的问题在这里:
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
几个小时以来,我一直在寻求有关此问题的帮助,但没有成功。我的脚本监视文件夹中是否存在超过 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 还是个新手。
谢谢!
您的问题在这里:
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