如何使用powershell Compare对象比较最后两个修改的文件

如何使用powershell Compare对象比较最后两个修改的文件,powershell,Powershell,我有一个powershell脚本,可以根据用户选择比较两个文件,但我希望在不询问用户输入的情况下比较最后两个修改的文件 Set-ExecutionPolicy Unrestricted -force cd\ cd .\script Write-Host " " Write-Host "Available Files " Write-Host "=================" Get-ChildItem | Format-table -Property Name -HideTable

我有一个powershell脚本,可以根据用户选择比较两个文件,但我希望在不询问用户输入的情况下比较最后两个修改的文件

    Set-ExecutionPolicy Unrestricted -force
cd\
cd .\script
Write-Host " "
Write-Host "Available Files "
Write-Host "================="
Get-ChildItem | Format-table -Property Name -HideTableHeaders
$file = 'c:\script\mismatchfound.txt'
$ref = get-content (Read-Host "Enter Reference FileName")
$dif = get-content (Read-Host "Enter Difference FileName")
Compare-Object -ReferenceObject $ref  -DifferenceObject $dif  -CaseSensitive | Format-table InputObject, SideIndicator -Autosize | out-file $file -Width 200 

您可以按如下方式执行此操作:

$FilePath = '.\path\to\your\files'
$File = 'c:\script\mismatchfound.txt'
$CompareFiles = Get-ChildItem $FilePath -File | Sort-Object LastWriteTime | Select-Object -Last 2

If ($Files.count -eq 2) {
    $Ref = get-content $CompareFiles[0]
    $Dif = get-content $CompareFiles[1]

    Compare-Object -ReferenceObject $ref  -DifferenceObject $dif  -CaseSensitive | Format-table InputObject, SideIndicator -Autosize | out-file $file -Width 200 
}
Else{
    Write-Error '2 files not returned.'
}
这使用
Get ChildItem
从在
$FilePath
中指定的路径返回文件。然后,它使用
Sort Object
按文件的
LastWriteTime
属性对它们进行排序。然后,它使用
Select Object
仅过滤该集合中返回的最后两个对象

然后,我们使用
if
来验证是否有两个文件,如果有,则将它们放入
$Ref
$Dif
变量中,并根据您的代码使用
比较对象


如果两个文件未返回,我们将返回一个错误。

您可以使用write host而不是write error,这将在所有版本的powershell中工作

cd\
cd .\Scripts
$File = 'c:\script\mismatchfound.txt'
$CompareFiles = Get-ChildItem -File  | Sort-Object LastWriteTime | Select-Object  -Last 2
If ($Files.count -eq 2) {
    $Ref = get-content ($CompareFiles[0])
    $Dif = get-content ($CompareFiles[1])

    Compare-Object -ReferenceObject $ref  -DifferenceObject $dif  -CaseSensitive | Format-table InputObject, SideIndicator -Autosize | out-file $file -Width 200 
} Else {
    Write-Host "File missing " -ForegroundColor White -BackgroundColor Red
}

感谢您的时间,上面的脚本显示错误,我想我们必须添加这个$Ref=get content($CompareFiles[0]),我编辑了您的答案并添加了相同的答案。这个很好,谢谢您的时间和答案。