Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   вывод значения свойства Описание msp файла (http://forum.oszone.net/showthread.php?t=333993)

specialist 26-03-2018 22:20 2805676

вывод значения свойства Описание msp файла
 
всем привет!

возникла необходимость выдергивать значение свойства из msp файлов обновлений для ms office - название обновления с номером KB

благодарю Pasha_ZZZ за реализацию задачи!

запускаю командный файл сл. содержания
Код:

@Echo Off
color 0B
mode con:cols=100 lines=30
Title Установка обновлений для Microsoft Office 2010
for /f %%i in ('dir /b /O-s Updates\*.msp') do (Call :SetupUpd %%i)

:SetupUpd
for /f "tokens=*" %%a in ('cscript description.vbs //B //NoLogo Updates\%1') do set "MSPName=%%a"
echo Устанавливается %MSPName%
Updates\%1 /qn /norestart
if %errorlevel% neq 0 Echo %1 installation error >>"%temp%\MSO_Update_Error_Log.txt"
GoTo :EOF

и рядом файл description.vbs сл. содержания
Код:

Const MSIOPENDATABASEMODE_PATCHFILE = 32
Set oMsi = CreateObject("WindowsInstaller.Installer")
Set msp = oMsi.OpenDatabase(WScript.Arguments(0),MSIOPENDATABASEMODE_PATCHFILE)
Set qView = msp.OpenView("SELECT `Property`,`Value` FROM MsiPatchMetadata WHERE `Property`='Description'")
qView.Execute : Set record = qView.Fetch()
WScript.StdOut.WriteLine record.StringData(2)

вывод получается такой:
Код:

Устанавливается Update for Microsoft Outlook 2010 (KB4018314) 32-Bit Edition
Устанавливается Update for Microsoft SharePoint Workspace 2010 (KB2878231) 32-Bit Edition
Устанавливается Service Pack 2 for Microsoft Office 2010 (KB2687455) 32-Bit Edition
Устанавливается Service Pack 2 for Microsoft Visio 2010 (KB2687468) 32-Bit Edition
Устанавливается Security Update for Microsoft Office 2010 (KB3203468) 32-Bit Edition


Serguei Kouzmine 27-03-2018 06:27 2805696

про MSO не пробовал но вот вам может помочь

пример из https://blogs.technet.microsoft.com/...ed-properties/


```
# origin https://blogs.technet.microsoft.com/...ed-properties/

function Get-FileMetaData {


[CmdletBinding()]
param(
[Parameter(Mandatory = $true,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true)]
[Alias('FullName', 'PSPath')]
[string[]]$Path
)

begin {
$oShell = New-Object -ComObject Shell.Application
}

process {
$Path | ForEach-Object {

if (Test-Path -Path $_ -PathType Leaf) {

$FileItem = Get-Item -Path $_

$oFolder = $oShell.Namespace($FileItem.DirectoryName)
$oItem = $oFolder.ParseName($FileItem.Name)

$props = @{}

0..287 | ForEach-Object {
$ExtPropName = $oFolder.GetDetailsOf($oFolder.Items, $_)
$ExtValName = $oFolder.GetDetailsOf($oItem, $_)

if (-not $props.ContainsKey($ExtPropName) -and
($ExtPropName -ne '')) {
$props.Add($ExtPropName, $ExtValName)
}

}

New-Object PSObject -Property $props
}
}

}

end {
$oShell = $null
}
}


```



пример использования -

```
. .\example.ps1
Get-FileMetaData -path 'C:\Windows\Installer\2ccc495.msp' |
select-object -property name,'Program Name','Item Type','Comments','Title','Subject' |format-list


Name : 2ccc495.msp
Program name : Windows Installer XML - SOC (3.6.3520.0)
Item type : Windows Installer Patch
Comments : KB2707250
Title : KB2707250
Subject : Hotfix for Microsoft Visual Studio 2012 - KB2707250

```

поскольку это `Shell.Application` то можно перевисать на VBS или MS Jscript

specialist 27-03-2018 10:26 2805728

на одном ресурсе подсказали такое решение
Код:

sFilename = "2f1f33.msp" 
sFolderPathspec = "C:\Windows\Installer" 
 
Set objShell = CreateObject ("Shell.Application") 
Set objFolder = objShell.Namespace(sFolderPathspec) 
 
File_description =  objFolder.GetDetailsOf(objFolder.Parsename(sFileName), 21) 
wscript.echo File_description

проверил - работает
осталось теперь сообразить как это пнуть в цикл перебора к установке всех файлов в папке updates из командного файла с выводом имен...


Время: 05:22.

Время: 05:22.
© OSzone.net 2001-