在Powershell中安装软件后比较2.txt

时间:2018-01-28 17:49:15

标签: powershell

我必须为我的学校编写一个代码,在安装软件后比较2个.txt文件。它应该不是显示在我安装的第一个.txt x软件上,而是在第二个它应该显示。我写了这个,但我无法比较它们,因为.txt文件中都缺少x软件。 我怎样才能让它发挥作用?

$array1 = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
          sort -Property installdate -Descending |
          Format-Table DisplayName, @{Name="InstallDate"; Expression={([DateTime]::ParseExact($_.InstallDate, 'yyyyMMdd', $null)).ToShortDateString()}}
$array2 = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
          sort -Property installdate -Descending |
          Format-Table DisplayName, @{Name="InstallDate"; Expression={([DateTime]::ParseExact($_.InstallDate, 'yyyyMMdd', $null)).ToShortDateString()}}

$array1 | Export-Clixml C:\Users\Qendrim\Desktop\lb02_test.txt

$counter = 0

Start-Sleep -Seconds 10

$array2 | Export-Clixml C:\Users\Qendrim\Desktop\lb02_test_dif.txt

#Compare-object -ReferenceObject (Import-Clixml C:\Users\Qendrim\Desktop\lb02_test.txt) -DifferenceObject ($array2)     
Compare-Object -ReferenceObject $(Get-Content C:\Users\Qendrim\Desktop\lb02_test.txt) -DifferenceObject $(Get-Content C:\Users\Qendrim\Desktop\lb02_test_dif.txt)

2 个答案:

答案 0 :(得分:0)

您的脚本适用于x32版本的x32或Windows上的x32或x64版本的Windows上的x64。

如果应用程序在x64版本的Windows上为x32,则该应用程序将在下面的密钥中列出。

x64 Windows操作系统上的x32程序: HKLM \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载\

尝试与新密钥进行比较,看看你的应用程序是否存在。

我还要将输出格式化为" out-file"而不是" export-Clixml"因为它更容易与所有额外的格式进行比较。文本文档比同一XML格式文件小21倍。

$array1 | export-Clixml C:\Users\Qendrim\Desktop\lb02_test.txt
$array1 | out-file C:\Users\Qendrim\Desktop\lb02_test.txt

答案 1 :(得分:0)

我认为你遇到的问题实际上非常简单。执行时:

$array2 = Get-ItemProperty 
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
          sort -Property installdate -Descending |
          Format-Table DisplayName, @{Name="InstallDate"; Expression=
{([DateTime]::ParseExact($_.InstallDate, 'yyyyMMdd', 
$null)).ToShortDateString()}}

然后将数据保存到该变量。在睡眠期后导出到文件后,您将导出先前保存的数据,而不是睡眠期后的数据。

修复很简单,假设您在睡眠期间安装/卸载软件。所有你需要将这些线移到" Start-Sleep 10"。

这与DonBennettJr建议使用" Out-File"而不是" Export-Clixml"应该让你走上正确的轨道。