PowerShell выдает ошибку «Ссылка на объект не установлена ​​для объекта экземпляра» - PullRequest
2 голосов
/ 28 февраля 2020

Каждый раз при запуске скрипта powershell я получаю сообщение об ошибке. Тем не менее, он работает успешно. Я хотел бы знать, что вызывает сообщение об ошибке. Спасибо!

PowerShell:

 [xml]$file = get-content "c:\Windows\personalsettings\PersonalSettings.xml"
  $xmlProperties = $file.SelectNodes("/Objects/Object/Property")
   If ($xmlProperties.Where({ $_.InnerText -eq 'FireFox' }, 'First'))
    {
    Invoke-expression "C:\Windows\SetDefaultBrowser\setdefaultbrowser"
  }
   If ($xmlProperties.Where({ $_.InnerText -eq 'Chrome' }, 'First'))
  { 
  Invoke-expression "C:\Windows\psu\protected\SetDefaultBrowser\setdefaultbrowser"
 }

XML Файл:

<?xml version="1.0"?>
<Objects>
<Object>
<Property Name="Browser">Firefox</Property>
<Property Name="PDF">Adobe Reader</Property>
</Object>
</Objects>

1 Ответ

0 голосов
/ 28 февраля 2020

Файл xml объявлен с пространством имен <?xml version="1.0"?>, и поэтому он не выбирает узлы. Будет лучше получить значения как обычные объекты:

$file = [xml](Get-Content "c:\Windows\personalsettings\PersonalSettings.xml")
$file.objects.object.property | ForEach {
  If ($_.Innertext -eq "Firefox") {
    Invoke-expression "C:\Windows\SetDefaultBrowser\setdefaultbrowser"
  }
  If ($_.Innertext -eq "Chrome") {
    Invoke-expression "C:\Windows\psu\protected\SetDefaultBrowser\setdefaultbrowser"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...