Мне интересно, почему test-path
возвращает true и false с двумя утверждениями, может ли кто-нибудь объяснить или предложить почему?Test-path возвращает false, когда это должно быть правдой
$app2find = "Easeus"
### search ###
$appSearch = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall |
Get-ItemProperty |
Where-Object {$_.DisplayName -match $app2find } |
Select-Object -Property DisplayName, UninstallString
### search results ###
if (!$appSearch) { "No apps named like $app2find were found" }
### uninstall ###
ForEach ($app in $appSearch) {
If ($app.UninstallString) {
Test-Path $app.UninstallString
Test-Path "C:\Program Files (x86)\EaseUS\EaseUS Partition Master 10.5\unins000.exe"
#& cmd /c $($app.UninstallString) /silent
}
}
Выход:
False
True
Желаемый результат:
True
True
большое спасибо
* EDIT
$app.UninstallString
это значение в реестре, который обеспечивает т он способ удалить конкретное приложение. В этом случае точно печатаются:
"C:\Program Files (x86)\EaseUS\EaseUS Partition Master 10.5\unins000.exe"
Что такое '$ app.UninstallString' в этом цикле? Вы уверены, что это ценность? –
$ app.UninstallString содержит «C: \ Program Files (x86) \ EaseUS \ EaseUS Partition Master 10.5 \ unins000.exe» – pedaleo
Можете ли вы включить точный вывод из этого сценария с добавленными строками, которые печатают эту переменную и вашу литеральную строку? –