Команда Get-Package включает строку xml - необходимо преобразовать в PSObject - PullRequest
0 голосов
/ 10 июля 2019

Требуется дата установки Центра обновления Windows для объекта Get-Package SwidTagText.Объект находится в формате XML, и все, что я пытался преобразовать, не работает.

Я пытаюсь переключиться с WMI, потому что он ужасно медленно откатывает результаты.

Пробовал функцию ConvertFrom-XML.Также попробовал ConvertFrom-String

Get-Package -ProviderName msu | Select-Object *
PropertyOfSoftwareIdentity : PropertyOfSoftwareIdentity
FastPackageReference       : Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.486.0)
ProviderName               : msu
Source                     : 
Status                     : Installed
SearchKey                  : 
FullPath                   : ?
PackageFilename            : ?
FromTrustedSource          : False
Summary                    : Install this update to revise the definition files that are used to detect viruses, spyware, and other potentially 
                             unwanted software. Once you have installed this item, it cannot be removed.
SwidTags                   : {Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.486.0)}
CanonicalId                : msu:Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.486.0)
Metadata                   : {summary,SupportUrl,Date,ResultCode}
SwidTagText                : <?xml version="1.0" encoding="utf-16" standalone="yes"?>
                             <SoftwareIdentity
                               name="Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.486.0)" 
                             xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd">
                               <Meta
                                 summary="Install this update to revise the definition files that are used to detect viruses, spyware, and other 
                             potentially unwanted software. Once you have installed this item, it cannot be removed."
                                 SupportUrl="https://go.microsoft.com/fwlink/?LinkId=52661"
                                 Date="7/5/2019 6:17:09 PM"
                                 ResultCode="2" />
                             </SoftwareIdentity>
Dependencies               : {}
IsCorpus                   : 
Name                       : Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.486.0)
Version                    :

1 Ответ

0 голосов
/ 10 июля 2019

Если вы пытаетесь получить необработанные даты из XML, вы можете сделать что-то вроде этого:

$xml = ((Get-Package -ProviderName msu) | Select-Object *).SwidTagText
foreach ($item in $xml)
    {
    $(
        $(
            [xml]$item | Select-Object "InnerXml"
        ).InnerXml | Select-Xml -XPath "//*[@Date]"
    ).Node.Date
    }

Это дает вам каждую запись для работы примерно так:

PS C:\Users\Skuld> $xml[0]
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<SoftwareIdentity
  name="Update for Windows Defender Antivirus antimalware platform - KB4052623 
(Version 4.18.1906.3)" xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd">
  <Meta
   summary="This package will update Windows Defender Antivirus antimalware 
platform’s components on the user machine."
    SupportUrl="https://go.microsoft.com/fwlink/?linkid=862339"
    Date="09/07/2019 10:46:52"
    ResultCode="2" />
</SoftwareIdentity>

Затем вы используете Select-XML / XPath, чтобы выбрать конкретный атрибут даты.

Мой пример даст только список всех дат, но вы можете настроить его, если вам понадобится дополнительная информация рядом с ним..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...