Мы пытаемся обновить наш BIOS в последовательности задач, и у меня есть скрипт от Lenovo, который отлично работает в Windows 10 и PowerShell v5.Тем не менее, он не работает должным образом в Windows 7 с PowerShell v2.Мы не можем выполнить обновление до v5 на компьютерах с Windows 7.
Сценарий считывает XML-файл, который я экспортировал из SCCM, и сопоставляет соответствующий пакет BIOS, загружает и запускает его.
Сценарий выглядит так:
[xml]$Packages = Get-Content BIOSPackages.xml
# Environment variable call for task sequence only
$tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment
$BIOS = (Get-WmiObject -Namespace root\cimv2 -Class Win32_BIOS).SMBIOSBIOSVersion.Substring(0,4)
$ns = New-Object Xml.XmlNamespaceManager $Packages.NameTable
$ns.AddNamespace("def", "http://schemas.microsoft.com/powershell/2004/04")
$Xpathqry = "/def:Objs/def:Obj//def:MS[contains(.,`"$BIOS`")]"
$Package = ($Packages.SelectNodes($xpathqry,$ns))
$PackageID = $Package.SelectNodes('def:S[contains(@N,"PackageID")]',$ns)
$tsenv.Value('OSDDownloadDownloadPackages') = $PackageID.InnerXML
и он не срабатывает:
$PackageID = $Package.SelectNodes('def:S[contains(@N,"PackageID")]',$ns)
Я пытался выдумать его в течение дня, и я просто бью стену.
Я получаю следующую ошибку:
Method invocation failed because [System.Xml.XPathNodeList] doesn't contain a
method named 'SelectNodes'.
At C:\_SMSTaskSequence\Packages\NC1002CB\Get-BIOSPackages.ps1:17 char:38
+ $PackageID = $Package.SelectNodes <<<< ('def:S[contains(@N,"PackageID")]',$ns)
+ CategoryInfo : InvalidOperation: (SelectNodes:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound