Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

2,653

Downloads of v 2.3.0.0:

675

Last Update:

27 Dec 2014

Package Maintainer(s):

Software Author(s):

  • Heath Stewart

Tags:

windows installer powershell cmdlets msi product msp patch mst transform

psmsi

This is not the latest version of psmsi available.

  • 1
  • 2
  • 3

2.3.0.0 | Updated: 27 Dec 2014

Downloads:

2,653

Downloads of v 2.3.0.0:

675

Maintainer(s):

Software Author(s):

  • Heath Stewart

psmsi 2.3.0.0

This is not the latest version of psmsi available.

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed


Validation Testing Unknown


Verification Testing Passed

Details

Scan Testing Successful:

No detections found in any package files

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install psmsi, run the following command from the command line or from PowerShell:

>

To upgrade psmsi, run the following command from the command line or from PowerShell:

>

To uninstall psmsi, run the following command from the command line or from PowerShell:

>

Deployment Method:

NOTE

This applies to both open source and commercial editions of Chocolatey.

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)


2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Copy Your Script

choco upgrade psmsi -y --source="'INTERNAL REPO URL'" --version="'2.3.0.0'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade psmsi -y --source="'INTERNAL REPO URL'" --version="'2.3.0.0'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install psmsi
  win_chocolatey:
    name: psmsi
    version: '2.3.0.0'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'psmsi' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '2.3.0.0'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller psmsi
{
    Name     = "psmsi"
    Version  = "2.3.0.0"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'psmsi':
  ensure   => '2.3.0.0',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved by moderator ferventcoder on 31 Dec 2014.

Description

Exposes Windows Installer functionality to PowerShell, providing means to query installed product and patch information, and to query views on packages.


tools\ChocolateyInstall.ps1
# Copyright (C) Microsoft Corporation. All rights reserved.
#
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# IMPLIED WARRANTIES OF MERCHANTABILITY ANDOR FITNESS FOR A
# PARTICULAR PURPOSE.

try
{
    $InstallPath = Split-Path (Split-Path $MyInvocation.MyCommand.Definition)

    # Append the install folder to the end of the any existing PSModulePath.
    $PSModulePath = [Environment]::GetEnvironmentVariable('PSModulePath', 'User')
    if ($PSModulePath) { $PSModulePath += ';' }
    $PSModulePath += $InstallPath

    Install-ChocolateyEnvironmentVariable 'PSModulePath' $PSModulePath -VariableType 'User'
    Write-ChocolateySuccess 'psmsi'
}
catch
{
    Write-ChocolateyFailure 'psmsi' "$($_.Exception.Message)"
    throw
}
tools\ChocolateyUninstall.ps1
# Copyright (C) Microsoft Corporation. All rights reserved.
#
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# IMPLIED WARRANTIES OF MERCHANTABILITY ANDOR FITNESS FOR A
# PARTICULAR PURPOSE.

try
{
    $InstallPath = Split-Path (Split-Path $MyInvocation.MyCommand.Definition)
    $PSModulePath = ([Environment]::GetEnvironmentVariable('PSModulePath', 'User') -split ';' | where-Object { $_ -ne $InstallPath }) -join ';'

    Install-ChocolateyEnvironmentVariable 'PSModulePath' $PSModulePath -VariableType 'User'
    Write-ChocolateySuccess 'psmsi'
}
catch
{
    Write-ChocolateyFailure 'psmsi' "$($_.Exception.Message)"
    throw
}
MSI\MSI.types.ps1xml
 
MSI\MSI.psm1
#Requires -Version 2.0

# Copyright (C) Microsoft Corporation. All rights reserved.
#
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
# PARTICULAR PURPOSE.

$script:loc = data {
    convertfrom-stringdata @'
        AdvtCaption = Confirm install
        AdvtDescription = Installing advertised features for product, {0}.
        AdvtWarning = Are you sure you want to install advertised features for product, {0}?
'@
}
import-localizeddata -bind loc -filename Resources.psd1 -ea SilentlyContinue

function Get-MSIComponentState
{
# .ExternalHelp Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml

    [CmdletBinding(DefaultParameterSetName = "Product")]
    param
    (
        [Parameter(ParameterSetName = "Product", Position = 0, Mandatory = $true, ValueFromPipeline = $true)]
        [Microsoft.Deployment.WindowsInstaller.ProductInstallation[]] $Product,

        [Parameter(ParameterSetName = "ProductCode", Position = 0, Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [Microsoft.Tools.WindowsInstaller.PowerShell.ValidateGuid()]
        [string[]] $ProductCode,

        [Parameter(ParameterSetName = "ProductCode", ValueFromPipelineByPropertyName = $true)]
        [Alias("Context", "InstallContext")]
        [Microsoft.Deployment.WindowsInstaller.UserContexts] $UserContext = "All",

        [Parameter(ParameterSetName = "ProductCode", ValueFromPipelineByPropertyName = $true)]
        [Microsoft.Tools.WindowsInstaller.PowerShell.Sid()]
        [string] $UserSid
    )

    process
    {
        if ($PSCmdlet.ParameterSetName -eq "ProductCode")
        {
            $Product = @(,(get-msiproductinfo @PSBoundParameters))
        }

        $Product | foreach-object {

            [string] $productCode = $_.ProductCode

            # Get the state of every authored component in the product and applied patches.
            $_ | get-msitable -table Component | foreach-object {

                # Attach authored information from the product package to the output object.
                $_ | get-msicomponentinfo -productcode $productCode `
                   | foreach-object { $_.PSTypeNames.Insert(0, $_.PSTypeNames[0] + "#State"); $_ } `
                   | add-member -type NoteProperty -name Component -value $_.Component -passthru
            }
        }
    }
}

function Get-MSISharedComponentInfo
{
# .ExternalHelp Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml

    [CmdletBinding()]
    param
    (
        [Parameter(Position = 0)]
        [ValidateNotNullOrEmpty()]
        [Microsoft.Tools.WindowsInstaller.PowerShell.ValidateGuid()]
        [string[]] $ComponentCode,
        
        [Parameter(Position = 1)]
        [ValidateRange(2, 2147483647)]
        [int] $Count = 2
    )
    
    end
    {
        $getcomponents = { get-msicomponentinfo }
        if ($ComponentCode)
        {
            $getcomponents = { get-msicomponentinfo -componentcode $ComponentCode }
        }
        & $getcomponents | group-object -property ComponentCode | where-object { $_.Count -ge $Count } `
            | select-object -expand Group
    }
}

function Install-MSIAdvertisedFeature
{
# .ExternalHelp Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml

    [CmdletBinding(DefaultParameterSetName = "ProductCode", ConfirmImpact = "Medium", SupportsShouldProcess = $true)]
    param
    (
        [Parameter(ParameterSetName = "ProductCode", ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Microsoft.Tools.WindowsInstaller.PowerShell.ValidateGuid()]
        [string[]] $ProductCode,

        [Parameter(ParameterSetName = "Product", Mandatory = $true, ValueFromPipeline = $true)]
        [Microsoft.Deployment.WindowsInstaller.ProductInstallation[]] $Product,

        [Parameter(Position = 0, ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string[]] $FeatureName,

        [Parameter()]
        [switch] $Force,

        [Parameter(ValueFromPipelineByPropertyName = $true, ValueFromRemainingArguments = $true)]
        [string[]] $Properties
    )

    begin
    {
        $YesToAll = $false
        $NoToAll = $false
    }

    process
    {
        # Get only specified or all products given a ProductCode.
        if ($PSBoundParameters.ContainsKey("ProductCode"))
        {
            $Product = get-msiproductinfo -productcode $ProductCode
        }
        elseif ($PSCmdlet.ParameterSetName -eq "ProductCode")
        {
            $Product = get-msiproductinfo
        }

        # Get only specified or all features for each selected product.
        if ($PSBoundParameters.ContainsKey("FeatureName"))
        {
            $features = $Product | foreach-object {
                get-msifeatureinfo -productcode $_.ProductCode -featurename $FeatureName
            }
        }
        else
        {
            $features = $Product | get-msifeatureinfo
        }

        # Construct and splat the necessary parameters to re-install each product.
        $features | where-object { $_.State -eq "Advertised" } | group-object ProductCode | foreach-object {
            $params = @{
                "ProductCode" = $_.Name;
                "Properties" = "$Properties ADDLOCAL=$(($_.Group | select-object -expand Name) -join ',')"
            }

            # Get the advertised product name from the existing collection so we don't cause a reentrance issue.
            $name = $_.Name
            $name = $Product | where-object { $_.ProductCode -eq $name } | select-object -expand AdvertisedProductName

            $description = $script:loc.AdvtDescription -f $name
            $warning = $script:loc.AdvtWarning -f $name

            if ($PSCmdlet.ShouldProcess($description, $warning, $script:loc.AdvtCaption))
            {
                if ($Force -or $PSCmdlet.ShouldContinue($null, $null, [ref] $YesToAll, [ref] $NoToAll))
                {
                    install-msiproduct @params
                }
            }
        }
    }
}

# Update the usage information for this module if installed.
[Microsoft.Tools.WindowsInstaller.PowerShell.Module]::Use()
MSI\MSI.psd1
 
MSI\MSI.formats.ps1xml
 
MSI\Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml
<?xml version="1.0" encoding="utf-8"?><helpItems schema="maml" xmlns="http://msh" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:maml="http://schemas.microsoft.com/maml/2004/10"><command:command><command:details><command:name>Add-MSISource</command:name><maml:description><maml:para>Adds a registered network source or URL from a product or patch.</maml:para></maml:description><command:verb>Add</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will add a network source or URL to a product or patch and optionally return the remaining registered source locations through the pipeline.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Add-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to register. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Add-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to register. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to register. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to register. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>add-msisource '{707ABAE4-4DC5-478C-9D36-7CC5C1A85A3C}' 'C:\Package Cache\'</dev:code><dev:remarks><maml:para>Adds the C:\Package Cache source location from the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Clear-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Clear-MSISource</command:name><maml:description><maml:para>Clears all registered network sources and URLs from a product or patch.</maml:para></maml:description><command:verb>Clear</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will clear all network sources and URLs from a product or patch.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Clear-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo '{707ABAE4-4DC5-478C-9D36-7CC5C1A85A3C}' | clear-msisource</dev:code><dev:remarks><maml:para>Clears all registered source from the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Add-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Edit-MSIPackage</command:name><maml:description><maml:para>Opens an install package or patch in Orca or another registered editor.</maml:para></maml:description><command:verb>Edit</command:verb><command:noun>MSIPackage</command:noun></command:details><maml:description><maml:para>Orca can be installed from the Windows SDK. If installed, MSI and MSP packages can be opened in Orca. If Orca is not installed, any application registered with the "Edit" verb for .msi or .msp file extensions is used.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Edit-MSIPackage</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Wait</maml:name><maml:description><maml:para>Wait until the process is closed before opening another package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Edit-MSIPackage</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Wait</maml:name><maml:description><maml:para>Wait until the process is closed before opening another package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Wait</maml:name><maml:description><maml:para>Wait until the process is closed before opening another package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.msi -recurse | edit-msipackage</dev:code><dev:remarks><maml:para>Opens all install packages in the current directory or subdirectories in separate instances of Orca.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Export-MSIPatchXml</command:name><maml:description><maml:para>Exports an XML representation of applicability information from a patch package.</maml:para></maml:description><command:verb>Export</command:verb><command:noun>MSIPatchXml</command:noun></command:details><maml:description><maml:para>Windows Installer defines an XML schema that is representational of a patch package - specifically its applicability information. This allows administrators and bundle developers to not require downloading the patch package just to find out if it's applicable or even already installed.</maml:para><maml:para /><maml:para>This XML file can be passed to Get-MSIPatchSequence along with other XML files or patch packages.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Export-MSIPatchXml</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the patch package from which XML is exported.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>FilePath</maml:name><maml:description><maml:para>The path to the output XML file.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Encoding</maml:name><maml:description><maml:para>The encoding to use for the output XML file.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">System.Text.Encoding</command:parameterValue><dev:type><maml:name>System.Text.Encoding</maml:name></dev:type><dev:defaultValue>UTF8</dev:defaultValue></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Formatted</maml:name><maml:description><maml:para>Whether to indent the XML file.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Encoding</maml:name><maml:description><maml:para>The encoding to use for the output XML file.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">System.Text.Encoding</command:parameterValue><dev:type><maml:name>System.Text.Encoding</maml:name></dev:type><dev:defaultValue>UTF8</dev:defaultValue></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>FilePath</maml:name><maml:description><maml:para>The path to the output XML file.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Formatted</maml:name><maml:description><maml:para>Whether to indent the XML file.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the patch package from which XML is exported.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>export-msipatchxml .\example.msp .\example.xml -formatted</dev:code><dev:remarks><maml:para>Exports formatted XML from the example.msp patch package in the current directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIPatchSequence</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIComponentInfo</command:name><maml:description><maml:para>Gets information about components registered to the current user and the machine.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIComponentInfo</command:noun></command:details><maml:description><maml:para>Gets information about all the components registered to the current user and to the machine. You can also limit the components to only those installed by a particular product.</maml:para><maml:para /><maml:para>The information includes the state of the component and the path all based on the product that installed it, since multiple products can install the same component even to different locations.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIComponentInfo</maml:name><command:parameter aliases="ComponentId" required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIComponentInfo</maml:name><command:parameter aliases="ComponentId" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of the product that installed the components to retrieve information.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="ComponentId" required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of the product that installed the components to retrieve information.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ComponentInstallation</maml:name><maml:description><maml:para>Information about the components installed or registered by one or multiple products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msicomponentinfo</dev:code><dev:remarks><maml:para>This command gets all components installed or registered to the current user or to the machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo "{90120000-00BA-0409-0000-0000000FF1CE}" | get-msicomponentinfo -componentcode "{90120000-00BA-0409-0000-0E32E9F6E558}"</dev:code><dev:remarks><maml:para>This command gets information for the component "{90120000-00BA-0409-0000-0E32E9F6E558}" installed by the product "{90120000-00BA-0409-0000-0000000FF1CE}".</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIComponentState</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIComponentState</command:name><maml:description><maml:para>Gets the install state for all authored components for one or more products installed on the machine.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIComponentState</command:noun></command:details><maml:description><maml:para>Gets the install state for all components authored into one or more products. This includes all patches applied to the product. In addition to the information returned from Get-MSIComponentInfo, the authored component identifier from the Component table is attached along with a simple boolean property that determines if the component is installed locally or not.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIComponentState</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The products for which authored component state is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIComponentState</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The installed ProductCodes that define the components for which state information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The products for which authored component state is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The installed ProductCodes that define the components for which state information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Products for which authored component state is retrieved.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ComponentInstallation#State</maml:name><maml:description><maml:para>State information about the components authored into one or more products and applied patches.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msicomponentstate "{877EF582-78AF-4D84-888B-167FDC3BCC11}"</dev:code><dev:remarks><maml:para>Gets state information for all components authored into the product "{877EF582-78AF-4D84-888B-167FDC3BCC11}" and all applied patches.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name *TEST* | get-msicomponentstate</dev:code><dev:remarks><maml:para>Gets state information for all components authored into any product where the ProductName matches *TEST*.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIComponentInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIFeatureInfo</command:name><maml:description><maml:para>Gets information about features of an installed or advertised product.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIFeatureInfo</command:noun></command:details><maml:description><maml:para>A product must install or advertise one or more features. This cmdlet can query feature of a product or products to determine their state and optional usage data.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIFeatureInfo</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The ProductInstallation object that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIFeatureInfo</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Name" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>FeatureName</maml:name><maml:description><maml:para>The names of the features for which information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="Name" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>FeatureName</maml:name><maml:description><maml:para>The names of the features for which information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The ProductInstallation object that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>The product or products for which features are enumerated.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.FeatureInstallation</maml:name><maml:description><maml:para>Information about the features installed or advertised by one or multiple products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo "{90120000-00BA-0409-0000-0000000FF1CE}" | get-msifeatureinfo | format-table -view Usage</dev:code><dev:remarks><maml:para>Gets the usage information for all the features installed by the product "{90120000-00BA-0409-0000-0000000FF1CE}".</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msifeatureinfo "{90120000-00BA-0409-0000-0000000FF1CE}" "GrooveFilesIntl_1033"</dev:code><dev:remarks><maml:para>Gets state information for the feature "GrooveFilesIntl_1033" installed by product "{90120000-00BA-0409-0000-0000000FF1CE}".</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIFileHash</command:name><maml:description><maml:para>Gets a hash of a file in a Windows Installer-compatible format.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIFileHash</command:noun></command:details><maml:description><maml:para>Get-MSIFileHash returns a 128-bit file hash in 4 separate parts, compatible with columns in the MsiFileHash table in Windows Installer packages. All non-versioned files should contain this hash.</maml:para><maml:para /><maml:para>You can optionally add these HashPart1, HashPart2, HashPart3, and HashPart4 properties to FileSystem items.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIFileHash</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with additional properties for the file hash.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIFileHash</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with additional properties for the file hash.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with additional properties for the file hash.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.FileHash</maml:name><maml:description><maml:para>If -passthru is not specified, Get-MSIFileHash returns a FileHash object containing the file hash in 4 parts.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.DirectoryInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a directory, the directory is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.FileInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a file, the file is returned.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msifilehash -path * | format-table -auto</dev:code><dev:remarks><maml:para>This command outputs the file hash of every file in the current directory as a table.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem | where-object {$_.PSIsContainer -eq $False} | get-msifilehash -passthru | format-table Name, MSI* -auto</dev:code><dev:remarks><maml:para>This command outputs the name and hash parts of each file in the current directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIFileType</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIFileType</command:name><maml:description><maml:para>Gets the Windows Installer file type.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIFileType</command:noun></command:details><maml:description><maml:para>Gets the Windows Installer file type for a given file or files.</maml:para><maml:para /><maml:para>You can optionally add this MSIFileType property to FileSystem items.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIFileType</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with the additional property for the file type.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIFileType</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with the additional property for the file type.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with the additional property for the file type.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>string</maml:name><maml:description><maml:para>If -passthru is not specified, Get-MSIFileType returns a string object.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.DirectoryInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a directory, the directory is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.FileInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a file, the file is returned.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msifilehash -path $env:WINDIR\Installer</dev:code><dev:remarks><maml:para>This command outputs the file type of files in the Windows Installer cache directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -path $env:WINDIR\Installer\* | where-object {$_.PSIsContainer -eq $False} | get-msifiletype -passthru | format-table Name, MSIFileType -auto</dev:code><dev:remarks><maml:para>This command outputs the Windows Installer file type for files in the Windows Installer cache directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIFileHash</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSILoggingPolicy</command:name><maml:description><maml:para>Gets the Windows Installer logging policy.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSILoggingPolicy</command:noun></command:details><maml:description><maml:para>The Windows Installer logging policy determines whether logs are generated by default and how much information they contain. This cmdlet gets the current logging policy and can return the logging modes as a collection of strings or the raw string value from the registry.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSILoggingPolicy</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>string</maml:name><maml:description><maml:para>If -raw is specified and a logging policy set, the raw registry value is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>string[]</maml:name><maml:description><maml:para>The default output type consisting of zero or more logging modes that are set in the registry.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><maml:relatedLinks><maml:navigationLink><maml:linkText>Remove-MSILoggingPolicy</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Set-MSILoggingPolicy</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIPatchInfo</command:name><maml:description><maml:para>Gets patch information for registered patches.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIPatchInfo</command:noun></command:details><maml:description><maml:para>Gets patch information for a given patch or for all patches registered to a given product or products. You can get patch information for machine-registered patches, and patch information for both user-managed- and user-unmanaged-registered patches for the current or another user.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIPatchInfo</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>Specifies the ProductCode or ProductCodes to get patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code or patch codes to retrieve patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged patches for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Filter</maml:name><maml:description><maml:para>The state or states of patches to be retrieved. This can be a combination of "Applied", "Superseded", "Obsoleted", "Registered", or "All".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.PatchStates</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchStates</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered patches. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged patches.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged patches for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Filter</maml:name><maml:description><maml:para>The state or states of patches to be retrieved. This can be a combination of "Applied", "Superseded", "Obsoleted", "Registered", or "All".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.PatchStates</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchStates</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code or patch codes to retrieve patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>Specifies the ProductCode or ProductCodes to get patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered patches. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged patches.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation</maml:name><maml:description><maml:para>Information about patches applied or registered to a product or products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msipatchinfo</dev:code><dev:remarks><maml:para>This command outputs a table of patch information for all applied patches on the machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msipatchinfo -filter superseded | get-childitem</dev:code><dev:remarks><maml:para>This command gets file information for superseded patches on the machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 3 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo | where-object {$_.Name -match "Office"} | get-msipatchinfo -filter all</dev:code><dev:remarks><maml:para>This command gets patch information for all patches applied to products with "Office" in the name.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIPatchSequence</command:name><maml:description><maml:para>Given a list of patches or patch XML, outputs the sequence of applicable patches for a product or products.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIPatchSequence</command:noun></command:details><maml:description><maml:para>Patch packages or patch XML files can be specified along with a list of products. Each patch is added to a list and after all patches specified are processed, the sequence for all applicable patches is output for each product specified.</maml:para><maml:para /><maml:para>By default, the table format is used with a grouping for each product specified.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>PackagePath</maml:name><maml:description><maml:para>The path to a product package or packages for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>PackagePath</maml:name><maml:description><maml:para>The path to a product package or packages for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes for products for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes for products for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>PackagePath</maml:name><maml:description><maml:para>The path to a product package or packages for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes for products for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSequence</maml:name><maml:description><maml:para>The sequence information for each applicable patch to a product or product package.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues></command:command><command:command><command:details><command:name>Get-MSIProductInfo</command:name><maml:description><maml:para>Gets product information for registered products.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIProductInfo</command:noun></command:details><maml:description><maml:para>Gets product information for all per-machine, user-managed, and user-unmanaged products on the machine.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIProductInfo</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to retrieve product information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged products for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIProductInfo</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged products for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Name</maml:name><maml:description><maml:para>The name of a product or products to retrieve. Wildcards are supported.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged products for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Name</maml:name><maml:description><maml:para>The name of a product or products to retrieve. Wildcards are supported.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to retrieve product information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information about the installed or advertised product. To see just the advertised properties use the PSAdvertised property set; or, to see just the installed properties use the PSInstalled property set.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo</dev:code><dev:remarks><maml:para>This command outputs product information for all registered products assigned to this machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo | where-object {$_.Name -match "Visual Studio"}</dev:code><dev:remarks><maml:para>This command outputs all product information for products with "Visual Studio" in the name assigned to this machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 3 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -installcontext userunmanaged | where-object {$_.ProductState -eq "Installed"} | get-childitem</dev:code><dev:remarks><maml:para>This command gets file information for all installed user-unmanaged products.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 4 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo "{1862162E-3BBC-448F-AA63-49F33152D54A}"</dev:code><dev:remarks><maml:para>This command gets product information for the given ProductCode.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIPatchInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSIRelatedProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIProperty</command:name><maml:description><maml:para>Gets properties from a product or patch package.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIProperty</command:noun></command:details><maml:description><maml:para>Selects all or matching properties from a product or patch package and either returns them to the pipeline or attaches them to a file object for a product or patch package if -PassThru is specified. When propertie are attached to a file object you can select them all using the "MSIProperties" property set.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIProperty</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="0"><maml:name>Property</maml:name><maml:description><maml:para>Optional list of property names to select. Wildcard are permitted.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product or patch package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the file object back to the pipeline with selected properties attached.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIProperty</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="0"><maml:name>Property</maml:name><maml:description><maml:para>Optional list of property names to select. Wildcard are permitted.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product or patch package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the file object back to the pipeline with selected properties attached.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product or patch package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the file object back to the pipeline with selected properties attached.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product or patch package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="0"><maml:name>Property</maml:name><maml:description><maml:para>Optional list of property names to select. Wildcard are permitted.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.Record</maml:name><maml:description><maml:para>The selected properties from the product or patch package.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.FileInfo</maml:name><maml:description><maml:para>The original file object with selected properties attached and referenced by the "MSIProperties" property set.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproperty Product*, UpgradeCode -path example.msi</dev:code><dev:remarks><maml:para>Gets the identifying properties from the example.msi product package.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.msi | get-msiproperty -passthru | select Name, MSIProperties</dev:code><dev:remarks><maml:para>Attaches all properties from each product package and shows them all along with the file name.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSITable</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIRelatedProductInfo</command:name><maml:description><maml:para>Gets product information for related products.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIRelatedProductInfo</command:noun></command:details><maml:description><maml:para>Gets product information for related products based on an UpgradeCode.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIRelatedProductInfo</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>UpgradeCode</maml:name><maml:description><maml:para>The UpgradeCode for related products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>UpgradeCode</maml:name><maml:description><maml:para>The UpgradeCode for related products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information about the installed or advertised product. To see just the installed properties use the PSInstalled property set.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msirelatedproductinfo "{B4160C68-1EA5-458F-B1EA-E69B41E44007}"</dev:code><dev:remarks><maml:para>This command gets all related products based on their UpgradeCode.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSISharedComponentInfo</command:name><maml:description><maml:para>Gets information about shared components installed or registered for the current user or the machine.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSISharedComponentInfo</command:noun></command:details><maml:description><maml:para>Shared components are component which are installed to the same directory by one or more products. This cmdlet gets information about all or specified shared components installed for the current user or the machine.</maml:para><maml:para /><maml:para>The output is already sorted by ComponentCode then ProductCode.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSISharedComponentInfo</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>Count</maml:name><maml:description><maml:para>The minimum number count for shared components returned. The absolute minimum is 2.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Int32</command:parameterValue><dev:type><maml:name>Int32</maml:name></dev:type><dev:defaultValue>2</dev:defaultValue></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>Count</maml:name><maml:description><maml:para>The minimum number count for shared components returned. The absolute minimum is 2.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Int32</command:parameterValue><dev:type><maml:name>Int32</maml:name></dev:type><dev:defaultValue>2</dev:defaultValue></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ComponentInstallation</maml:name><maml:description><maml:para>Information about the shared components installed or registered by one or more products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msisharedcomponentinfo -count 4 | format-table -view Clients</dev:code><dev:remarks><maml:para>Gets shared components installed by at least 4 products (or features) and displays them in a table grouped by ComponentCode.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIComponentInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSISource</command:name><maml:description><maml:para>Gets the registered network source or URLs for a product or patch.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will enumerate those locations registered to a product or patch.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo | get-msisource</dev:code><dev:remarks><maml:para>Gets the registered source for all installed products on the machine.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Add-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Clear-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSISummaryInfo</command:name><maml:description><maml:para>Gets the summary information from a product or patch package, or from a transform.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSISummaryInfo</command:noun></command:details><maml:description><maml:para>The summary information stream is used by Windows Installer to determine applicability, version requirements, and more. Use this command to view the summary information for a product or patch package, or a transform. The properties returned are adapted for each file type.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSISummaryInfo</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package or transform to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Transforms" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IncludeTransforms</maml:name><maml:description><maml:para>Whether to enumerate the transforms within a patch package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSISummaryInfo</maml:name><command:parameter aliases="Transforms" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IncludeTransforms</maml:name><maml:description><maml:para>Whether to enumerate the transforms within a patch package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package or transform to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="Transforms" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IncludeTransforms</maml:name><maml:description><maml:para>Whether to enumerate the transforms within a patch package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package or transform to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package or transform to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.Package.TransformInfo</maml:name><maml:description><maml:para>Summary information for a transform within a patch package.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SummaryInfo</maml:name><maml:description><maml:para>Summary information for a product or patch package, or a transform.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.ms* | get-msisummaryinfo</dev:code><dev:remarks><maml:para>Gets summary information for any file matching *.ms*, including .msi, .msp, and .mst packages.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msisummaryinfo *.msp -includetransforms</dev:code><dev:remarks><maml:para>Gets the patch and embedded transform summary information.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Get-MSITable</command:name><maml:description><maml:para>Selects records from a table or custom query from a product or patch package.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSITable</command:noun></command:details><maml:description><maml:para>You can query all records from a table or records matching a custom query from a product or patch package. The Windows Installer SDK has more information about custom queries, since the SQL-like syntax is rather constrained.</maml:para><maml:para /><maml:para>When no table or query is provided all tables from the package are displayed. Specifying a patch or transform will cause tables added by the patch or transform to be displayed, along with the operation performed on that table by the patch or transform in the MSIOperation property.</maml:para><maml:para /><maml:para>Records are returned with properties matching column names. If records are selected from a single table, the table name is also part of the type name queryable from the PSTypeNames object property. If the column name is prefixed with the table name - required to disambiguate names, or optional otherwise - a property is returned as typed in the original query string. Note that Windows PowerShell allows periods in property names but may require in some scenarios that a property name with periods is contained in quotes, like 'File.Attributes'.</maml:para><maml:para /><maml:para>For attribute columns in standard Windows Installer tables, you may also query for specific attribute values by specifying a special property name on the end of the attribute column name, like 'File.Attributes'.HasVital, to query for any columns that have the attribute value set. You can define an $MsiAttributeColumnFormat variable to control the display format of attribute columns, though the underlying value will not be changed. Run 'help about_MSI' for more information.</maml:para><maml:para /><maml:para>Note that patch packages do not typically have more than a couple of tables. The patch has to be applied to a product package to view any changes it has made. When applying a patch or transforms, records will contain an operation performed on the record by the patch or transform in the MSIOperation property.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="1"><maml:name>Product</maml:name><maml:description><maml:para>An installed product to query.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IgnoreMachineState</maml:name><maml:description><maml:para>Whether to apply any patches current installed to the product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type><dev:defaultValue>false</dev:defaultValue></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="1"><maml:name>Product</maml:name><maml:description><maml:para>An installed product to query.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IgnoreMachineState</maml:name><maml:description><maml:para>Whether to apply any patches current installed to the product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type><dev:defaultValue>false</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IgnoreMachineState</maml:name><maml:description><maml:para>Whether to apply any patches current installed to the product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type><dev:defaultValue>false</dev:defaultValue></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="1"><maml:name>Product</maml:name><maml:description><maml:para>An installed product to query.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>An existing product to query. By default any patches already applied to the product are applied to the database.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.Record</maml:name><maml:description><maml:para>Selected records for a table or custom query where properties match column names.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.TableInfo</maml:name><maml:description><maml:para>Information about a table contained in the database or added by a patch or transform.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msitable .\example.msi -table Property</dev:code><dev:remarks><maml:para>Gets all records from the Property table.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>$productCode = get-msitable .\example.msi -table Property | where-object { $_.Property -eq "ProductCode" } | select-object -expand Value</dev:code><dev:remarks><maml:para>Selects just the ProductCode property from the example.msi package and assigns the value to a variable.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 3 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.msi | get-msitable -query "SELECT ComponentId, FileName, FileSize FROM Component, File WHERE Component_ = Component"</dev:code><dev:remarks><maml:para>Selects the component GUID, file name, and file size for all files in all packages in the current directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 4 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msitable .\example.msi -query "SELECT ComponentId, FileName, File.Attributes FROM Component, File WHERE Component_ = Component" | where-object { $_.'File.Attributes'.HasVital }</dev:code><dev:remarks><maml:para>Selects all vital files and displays the component GUID, file name, and all file attribtes from the example.msi package.</maml:para><maml:para /><maml:para>Note that in the query filter the 'File.Attributes' column is contained in quotes; otherwise, Windows PowerShell will attempt to filter based on an Attributes property of a File property of the current pipeline object. The 'File.Attributes' column is contained in quotes in the original query because the Component table also contains a column named Attributes. Windows Installer requires that you disambiguate column names.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 5 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msitable .\example.msi -patch .\example.msp | get-msitable | where-object { $_.MSIOperation -ne 'None' }</dev:code><dev:remarks><maml:para>Gets all records in the example.msi package added or modified by the example.msp patch package.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 6 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo '{877EF582-78AF-4D84-888B-167FDC3BCC11}' | get-msitable -table Property</dev:code><dev:remarks><maml:para>Selects records from the installed product along with any patches currently installed.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSIProperty</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Install-MSIAdvertisedFeature</command:name><maml:description><maml:para>Installs advertised features.</maml:para></maml:description><command:verb>Install</command:verb><command:noun>MSIAdvertisedFeature</command:noun></command:details><maml:description><maml:para>Some or all features can be advertised for a product. This may be by design or incidental if certain patching problems occur. You can use this cmdlet to to install some or all advertise features for some or all products.</maml:para><maml:para /><maml:para>You can also scan for all advertised features using the -WhatIf parameter to see what would be done to your system without performing those operations. Use -Confirm if you want to approve the operation to each product.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Install-MSIAdvertisedFeature</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>FeatureName</maml:name><maml:description><maml:para>One or more specific features to install. Feature names are case-sensitive.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="cf" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Confirm</maml:name><maml:description><maml:para>Confirm installing advertised features for each product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Perform each operation without confirmation.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>One or more ProductCodes to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName, FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the installation operation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="wi" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>WhatIf</maml:name><maml:description><maml:para>Show what operations would be performed without actually performing them.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIAdvertisedFeature</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>FeatureName</maml:name><maml:description><maml:para>One or more specific features to install. Feature names are case-sensitive.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="cf" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Confirm</maml:name><maml:description><maml:para>Confirm installing advertised features for each product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Perform each operation without confirmation.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>One or more products passed through the pipeline to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName, FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the installation operation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="wi" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>WhatIf</maml:name><maml:description><maml:para>Show what operations would be performed without actually performing them.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="cf" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Confirm</maml:name><maml:description><maml:para>Confirm installing advertised features for each product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>FeatureName</maml:name><maml:description><maml:para>One or more specific features to install. Feature names are case-sensitive.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Perform each operation without confirmation.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>One or more products passed through the pipeline to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>One or more ProductCodes to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName, FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the installation operation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="wi" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>WhatIf</maml:name><maml:description><maml:para>Show what operations would be performed without actually performing them.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>An existing product for which advertised features should be installed.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>install-msiadvertisedfeature -whatif</dev:code><dev:remarks><maml:para>Scans all features in all products for advertised features and reports what operation would be performed.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo '{12341234-1234-1234-1234-123412341234}' | install-msiadvertisedfeature Complete</dev:code><dev:remarks><maml:para>Installs the 'Complete' feature for the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Install-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Install-MSIPatch</command:name><maml:description><maml:para>Installs a patch package or packages for all or only specified products.</maml:para></maml:description><command:verb>Install</command:verb><command:noun>MSIPatch</command:noun></command:details><maml:description><maml:para>You can install one or more patch packages to all installed targets products or to just a subset of products.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Install-MSIPatch</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to install to other products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to install to other products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation</maml:name><maml:description><maml:para>Information for the newly installed patch or patches.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>install-msipatch .\example.msp MSIFASTINSTALL=2</dev:code><dev:remarks><maml:para>Install the example.msp patch package for all installed target products with MSIFASTINSTALL set to only do file costing before installation.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name TEST | install-msipatch .\example.msp -log $env:TEMP\patch.log -passthru</dev:code><dev:remarks><maml:para>Install the example.msp patch package only for the product with ProductName "TEST" and log to the TEMP directory.</maml:para><maml:para /><maml:para>Return information about the patch after logging.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Uninstall-MSIPatch</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Install-MSIProduct</command:name><maml:description><maml:para>Installs or modifies a product package.</maml:para></maml:description><command:verb>Install</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>Installs a product package or adds features to existing products.</maml:para><maml:para /><maml:para>Ultimately, this cmdlet can install, modify, repair, and even uninstall a product package or install patches but specialized cmdlets have been added for those tasks.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>An existing product to modify.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information for the newly installed or modified product.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>install-msiproduct .\example.msi NOBLOCK=1</dev:code><dev:remarks><maml:para>Installs the example.msi product package passing the ficticious NOBLOCK=1 property.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name TEST | install-msiproduct ADDLOCAL=Addin -log $env:TEMP\install.log</dev:code><dev:remarks><maml:para>Modifies the existing product with ProductName TEST to add the "Addin" feature locally and log to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIPatch</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Repair-MSIProduct</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Uninstall-MSIPatch</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Uninstall-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Measure-MSIProduct</command:name><maml:description><maml:para>Gets drive costs for components that would be installed to any drive.</maml:para></maml:description><command:verb>Measure</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>You can use this command to get the costs for components that will be installed to any drive mounted to the system. If multiple product packages are specified the total costs for all components in all specified products are returned.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Measure-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to measure. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before measuring. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the session.</maml:para><maml:para /><maml:para>Note that you can mark all features for installation using ADDLOCAL=ALL or set public directories using this parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before measuring.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Measure-MSIProduct</maml:name><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to measure. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before measuring. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the session.</maml:para><maml:para /><maml:para>Note that you can mark all features for installation using ADDLOCAL=ALL or set public directories using this parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before measuring.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to measure. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before measuring. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to measure. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the session.</maml:para><maml:para /><maml:para>Note that you can mark all features for installation using ADDLOCAL=ALL or set public directories using this parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before measuring.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>System.Management.Automation.PSDriveInfo</maml:name><maml:description><maml:para>A PSDriveInfo object with MSISpaceRequired and MSITemporarySpaceRequired properties attached (measured in bytes).</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>measure-msiproduct .\example.msi -patch .\example.msp -target X:\Example</dev:code><dev:remarks><maml:para>Gets the drive costs for example.msi with example.msp applied if installed to the X:\Example directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Remove-MSILoggingPolicy</command:name><maml:description><maml:para>Removes the Windows Installer logging policy.</maml:para></maml:description><command:verb>Remove</command:verb><command:noun>MSILoggingPolicy</command:noun></command:details><maml:description><maml:para>The Windows Installer logging policy determines whether logs are generated by default and how much information they contain. This cmdlet removes the current logging and debug policies.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Remove-MSILoggingPolicy</maml:name></command:syntaxItem></command:syntax><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSILoggingPolicy</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Set-MSILoggingPolicy</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Remove-MSISource</command:name><maml:description><maml:para>Removes a registered network source or URL from a product or patch.</maml:para></maml:description><command:verb>Remove</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will remove a location registered to a product or patch and optionally return the remaining locations through the pipeline.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Remove-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to unregister. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Remove-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to unregister. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to unregister. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to unregister. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>remove-msisource '{707ABAE4-4DC5-478C-9D36-7CC5C1A85A3C}' 'C:\Package Cache\'</dev:code><dev:remarks><maml:para>Removes the C:\Package Cache source location from the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Add-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Clear-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Repair-MSIProduct</command:name><maml:description><maml:para>Repairs or modifies a product package.</maml:para></maml:description><command:verb>Repair</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>By default, simply repairs an existing product. This cmdlet can also add or remove features, patches, or even uninstall but there are specialized cmdlets for that.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to repair. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to repair. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to repair. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to repair. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>The product to repair or modify.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information for the newly repaired product.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>repair-msiproduct -productcode {12341234-1234-1234-1234-123412341234} -reinstall "pecmsu" -log $env:TEMP\repair.log</dev:code><dev:remarks><maml:para>Repair the specified product using REINSTALLMODE="pecmsu" and log to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name *TEST* | repair-msiproduct -chain</dev:code><dev:remarks><maml:para>Repair all products with ProductName matching *TEST* and show a single progress bar for the entire operation.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIProduct</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Uninstall-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Set-MSILoggingPolicy</command:name><maml:description><maml:para>Sets the Windows Installer logging policy.</maml:para></maml:description><command:verb>Set</command:verb><command:noun>MSILoggingPolicy</command:noun></command:details><maml:description><maml:para>The Windows Installer logging policy determines whether logs are generated by default and how much information they contain. This cmdlet sets the logging policy and can return the logging modes as a collection of strings or the raw string value from the registry if -passthru is specified.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Set-MSILoggingPolicy</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0"><maml:name>LoggingPolicy</maml:name><maml:description><maml:para>The logging mode to set in the registry. If "ExtraDebug" or "x" are set, the Debug policy is also set to 7; however, if neither are set the current Debug policy is not removed.</maml:para><maml:para /><maml:para>This can be a combination of "None", "ActionData", "ActionStart", "CommonData", "Error", "ExtraDebug", "FatalExit", "Information", "OutOfDiskSpace", "PropertyDump", "User", "Verbose", "Warning", "All", and "FlushEachLine"; or you can specify the Windows Installer command line options consisting of any combination of the characters "voicewarmupx!".</maml:para><maml:para /><maml:para>Note that "All" does not include "FlushEachLine", but is equivalent to "voicewarmupx".</maml:para></maml:description><command:parameterValue required="true" variableLength="false">Microsoft.Tools.WindowsInstaller.LoggingPolicies</command:parameterValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.LoggingPolicies</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Returns the logging modes set in the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Along with -passthru, returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0"><maml:name>LoggingPolicy</maml:name><maml:description><maml:para>The logging mode to set in the registry. If "ExtraDebug" or "x" are set, the Debug policy is also set to 7; however, if neither are set the current Debug policy is not removed.</maml:para><maml:para /><maml:para>This can be a combination of "None", "ActionData", "ActionStart", "CommonData", "Error", "ExtraDebug", "FatalExit", "Information", "OutOfDiskSpace", "PropertyDump", "User", "Verbose", "Warning", "All", and "FlushEachLine"; or you can specify the Windows Installer command line options consisting of any combination of the characters "voicewarmupx!".</maml:para><maml:para /><maml:para>Note that "All" does not include "FlushEachLine", but is equivalent to "voicewarmupx".</maml:para></maml:description><command:parameterValue required="true" variableLength="false">Microsoft.Tools.WindowsInstaller.LoggingPolicies</command:parameterValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.LoggingPolicies</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Returns the logging modes set in the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Along with -passthru, returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>string</maml:name><maml:description><maml:para>If -passthru and -raw are specified and a logging policy set, the raw registry value is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>string[]</maml:name><maml:description><maml:para>If -passthru is specified, the default output type consisting of zero or more logging modes that are set in the registry.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSILoggingPolicy</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSILoggingPolicy</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Test-MSIProduct</command:name><maml:description><maml:para>Runs internal consistency evaluators (ICEs) against the product package or packages.</maml:para></maml:description><command:verb>Test</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>Internal consistency evaluators (ICEs) are custom actions that validate whether a product is authored as specified. If Orca or MsiVal2 is installed, the default ICE .cub ("ICE cube") file is used by default, and you can specify custom ICE cube.</maml:para><maml:para /><maml:para>You can also apply any number of patches or transforms before running ICEs. This allows you to evaluate a product that is transformed by, for example, a patch to also make sure the changes made by a patch or valid.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Test-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to evaluate. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Cube" required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>AdditionalCube</maml:name><maml:description><maml:para>One or more ICE .cub files to use for evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Exclude</maml:name><maml:description><maml:para>The names of ICEs to exclude from evaluation (all other ICEs are included).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Include</maml:name><maml:description><maml:para>The names of ICEs to include from evaluation (all other ICEs are excluded).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>NoDefault</maml:name><maml:description><maml:para>Do not import darice.cub if installed with Orca or MsiVal2.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before evaluation. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Test-MSIProduct</maml:name><command:parameter aliases="Cube" required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>AdditionalCube</maml:name><maml:description><maml:para>One or more ICE .cub files to use for evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Exclude</maml:name><maml:description><maml:para>The names of ICEs to exclude from evaluation (all other ICEs are included).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Include</maml:name><maml:description><maml:para>The names of ICEs to include from evaluation (all other ICEs are excluded).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to evaluate. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>NoDefault</maml:name><maml:description><maml:para>Do not import darice.cub if installed with Orca or MsiVal2.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before evaluation. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="Cube" required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>AdditionalCube</maml:name><maml:description><maml:para>One or more ICE .cub files to use for evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Exclude</maml:name><maml:description><maml:para>The names of ICEs to exclude from evaluation (all other ICEs are included).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Include</maml:name><maml:description><maml:para>The names of ICEs to include from evaluation (all other ICEs are excluded).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to evaluate. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>NoDefault</maml:name><maml:description><maml:para>Do not import darice.cub if installed with Orca or MsiVal2.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before evaluation. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to evaluate. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.IceMessage</maml:name><maml:description><maml:para>Information generated from each ICE. Specifying -Verbose will show additional information from each ICE.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>test-msiproduct .\example.msi -include ICE0* -exclude ICE03 -v</dev:code><dev:remarks><maml:para>Output all messages from ICEs 01 through 09 except for ICE03.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>test-msiproduct .\example.msi -patch .\example.msp -add .\tests\custom.cub</dev:code><dev:remarks><maml:para>Apply example.msp to example.msi, then run all the default and custom ICEs.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Uninstall-MSIPatch</command:name><maml:description><maml:para>Installs a patch package or packages for all or only specified products.</maml:para></maml:description><command:verb>Uninstall</command:verb><command:noun>MSIPatch</command:noun></command:details><maml:description><maml:para>Uninstalls one or more packages from all products which they're applied or only from the specified set of products based on their ProductCode.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Uninstall-MSIPatch</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductifo -name TEST | get-msipatchinfo | uninstall-msipatch -log $env:TEMP\unpatch.log</dev:code><dev:remarks><maml:para>Uninstalls all patches applied to the product with ProductName TEST and logs to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIPatch</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Uninstall-MSIProduct</command:name><maml:description><maml:para>Uninstalls a product package or packages, or an existing product on the machine.</maml:para></maml:description><command:verb>Uninstall</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>This cmdlet, unlike related cmdlets, is designed to uninstalled one or more products. While there are ways to override this behavior, it is not recommend and you should instead use specialized cmdlets for this purpose. See the related links for suggestions.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>The product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of a product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>The product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of a product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>The product to uninstall.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>uninstall-msiproduct .\example.msi -log $env:TEMP\uninstall.log</dev:code><dev:remarks><maml:para>Uninstall the example.msi product package and log to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name *TEST* | uninstall-msiproduct -chain</dev:code><dev:remarks><maml:para>Uninstall all products with ProductName matching *TEST* and show a single progress bar for the entire operation.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIProduct</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Repair-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command></helpItems>
MSI\Microsoft.Tools.WindowsInstaller.PowerShell.dll
 
MSI\Microsoft.Deployment.WindowsInstaller.Package.dll
 
MSI\Microsoft.Deployment.WindowsInstaller.dll
 
MSI\Microsoft.Deployment.Compression.dll
 
MSI\Microsoft.Deployment.Compression.Cab.dll
 
MSI\about_MSI.help.txt
TOPIC
    about_MSI

DESCRIPTION
    Exposes Windows Installer functionality to PowerShell, providing means to
    query installed product and patch information and to query views on
    packages.


VARIABLES
    MsiAttributeColumnFormat
        The format specification string to alter how attributes are displayed.

        Valid values are:

        -- G:   Displays the integer value. This is the default.
        -- X:   Displays the hexadecimal integer value.
        -- F:   Displays one or more names for well-known attribute types.

ONLINE
    https://psmsi.codeplex.com/documentation

LICENSE
    https://psmsi.codeplex.com/license

HISTORY
    See http://psmsi.codeplex.com/releases for up-to-date information.

	2.3.0
		This release adds support for per-machine installs of the module.
		Administrators may choose this option for enterprise deployment
		or to make the module available to remote sessions.

		Several performance enhancements were made in addition to bug fixes:
		-- PSPath property for components only resolves full path when used.
		-- Export-MSIPatchXml no longer requires full path to patch MSP.
		-- Get-MSITable can apply patch MSPs to not-installed product MSIs.

		Piping components to Get-ChildItem now also works correctly for
		file system and registry key paths. To support this behavior, a
		KeyPath property was added that contains the non-transformed path
		previously contained within the PSPath property.

	2.2.1
		This release is a servicing issue and fixes various issues, notably:
		-- Returns the correct 32- or 64-bit registry path.
		-- Module can correctly be loaded into PowerShell v2.
		-- Older versions of Orca are now supported.
		-- The Record property adapter is now case-insensitive.

		The Get-MSITable cmdlet now also supports applying patches in
		sequence order and transforms.

    2.2.0
        This release adds many new cmdlets from the past release, including
        cmdlets to select records from a table or custom query, run ICEs on a
        package, and install, repair, or uninstall packages. The install,
        repair, and uninstall cmdlets also display progress, warning, and
        error information. Some issues were fixed as well.

        The snap-in installer has been removed in favor of the module
        installer - a per-user install that will upgrade any previous version.
        You may also install the package to a per-machine location, though
        elevation is required. This will make the module accessible to any
        host for any user on the machine.
Licenses\WIX.txt
Copyright (c) 2004, Outercurve Foundation.
This software is released under the Microsoft Reciprocal License (MS-RL) (the "License"); you may not use the software except in compliance with the License.

The text of the Microsoft Reciprocal License (MS-RL) can be found online at:
 http://opensource.org/licenses/ms-rl


Microsoft Reciprocal License (MS-RL)

This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.

1. Definitions
 The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
 A "contribution" is the original software, or any additions or changes to the software.
 A "contributor" is any person that distributes its contribution under this license.
 "Licensed patents" are a contributor's patent claims that read directly on its contribution.

2. Grant of Rights
 (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
 (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.

3. Conditions and Limitations
 (A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
 (B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
 (C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
 (D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
 (E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
 (F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
lib\net20\Microsoft.Tools.WindowsInstaller.PowerShell.XML
 
lib\net20\Microsoft.Tools.WindowsInstaller.PowerShell.dll
 
content\MSI.types.ps1xml
 
content\MSI.psm1
#Requires -Version 2.0

# Copyright (C) Microsoft Corporation. All rights reserved.
#
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
# PARTICULAR PURPOSE.

$script:loc = data {
    convertfrom-stringdata @'
        AdvtCaption = Confirm install
        AdvtDescription = Installing advertised features for product, {0}.
        AdvtWarning = Are you sure you want to install advertised features for product, {0}?
'@
}
import-localizeddata -bind loc -filename Resources.psd1 -ea SilentlyContinue

function Get-MSIComponentState
{
# .ExternalHelp Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml

    [CmdletBinding(DefaultParameterSetName = "Product")]
    param
    (
        [Parameter(ParameterSetName = "Product", Position = 0, Mandatory = $true, ValueFromPipeline = $true)]
        [Microsoft.Deployment.WindowsInstaller.ProductInstallation[]] $Product,

        [Parameter(ParameterSetName = "ProductCode", Position = 0, Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [Microsoft.Tools.WindowsInstaller.PowerShell.ValidateGuid()]
        [string[]] $ProductCode,

        [Parameter(ParameterSetName = "ProductCode", ValueFromPipelineByPropertyName = $true)]
        [Alias("Context", "InstallContext")]
        [Microsoft.Deployment.WindowsInstaller.UserContexts] $UserContext = "All",

        [Parameter(ParameterSetName = "ProductCode", ValueFromPipelineByPropertyName = $true)]
        [Microsoft.Tools.WindowsInstaller.PowerShell.Sid()]
        [string] $UserSid
    )

    process
    {
        if ($PSCmdlet.ParameterSetName -eq "ProductCode")
        {
            $Product = @(,(get-msiproductinfo @PSBoundParameters))
        }

        $Product | foreach-object {

            [string] $productCode = $_.ProductCode

            # Get the state of every authored component in the product and applied patches.
            $_ | get-msitable -table Component | foreach-object {

                # Attach authored information from the product package to the output object.
                $_ | get-msicomponentinfo -productcode $productCode `
                   | foreach-object { $_.PSTypeNames.Insert(0, $_.PSTypeNames[0] + "#State"); $_ } `
                   | add-member -type NoteProperty -name Component -value $_.Component -passthru
            }
        }
    }
}

function Get-MSISharedComponentInfo
{
# .ExternalHelp Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml

    [CmdletBinding()]
    param
    (
        [Parameter(Position = 0)]
        [ValidateNotNullOrEmpty()]
        [Microsoft.Tools.WindowsInstaller.PowerShell.ValidateGuid()]
        [string[]] $ComponentCode,
        
        [Parameter(Position = 1)]
        [ValidateRange(2, 2147483647)]
        [int] $Count = 2
    )
    
    end
    {
        $getcomponents = { get-msicomponentinfo }
        if ($ComponentCode)
        {
            $getcomponents = { get-msicomponentinfo -componentcode $ComponentCode }
        }
        & $getcomponents | group-object -property ComponentCode | where-object { $_.Count -ge $Count } `
            | select-object -expand Group
    }
}

function Install-MSIAdvertisedFeature
{
# .ExternalHelp Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml

    [CmdletBinding(DefaultParameterSetName = "ProductCode", ConfirmImpact = "Medium", SupportsShouldProcess = $true)]
    param
    (
        [Parameter(ParameterSetName = "ProductCode", ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Microsoft.Tools.WindowsInstaller.PowerShell.ValidateGuid()]
        [string[]] $ProductCode,

        [Parameter(ParameterSetName = "Product", Mandatory = $true, ValueFromPipeline = $true)]
        [Microsoft.Deployment.WindowsInstaller.ProductInstallation[]] $Product,

        [Parameter(Position = 0, ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string[]] $FeatureName,

        [Parameter()]
        [switch] $Force,

        [Parameter(ValueFromPipelineByPropertyName = $true, ValueFromRemainingArguments = $true)]
        [string[]] $Properties
    )

    begin
    {
        $YesToAll = $false
        $NoToAll = $false
    }

    process
    {
        # Get only specified or all products given a ProductCode.
        if ($PSBoundParameters.ContainsKey("ProductCode"))
        {
            $Product = get-msiproductinfo -productcode $ProductCode
        }
        elseif ($PSCmdlet.ParameterSetName -eq "ProductCode")
        {
            $Product = get-msiproductinfo
        }

        # Get only specified or all features for each selected product.
        if ($PSBoundParameters.ContainsKey("FeatureName"))
        {
            $features = $Product | foreach-object {
                get-msifeatureinfo -productcode $_.ProductCode -featurename $FeatureName
            }
        }
        else
        {
            $features = $Product | get-msifeatureinfo
        }

        # Construct and splat the necessary parameters to re-install each product.
        $features | where-object { $_.State -eq "Advertised" } | group-object ProductCode | foreach-object {
            $params = @{
                "ProductCode" = $_.Name;
                "Properties" = "$Properties ADDLOCAL=$(($_.Group | select-object -expand Name) -join ',')"
            }

            # Get the advertised product name from the existing collection so we don't cause a reentrance issue.
            $name = $_.Name
            $name = $Product | where-object { $_.ProductCode -eq $name } | select-object -expand AdvertisedProductName

            $description = $script:loc.AdvtDescription -f $name
            $warning = $script:loc.AdvtWarning -f $name

            if ($PSCmdlet.ShouldProcess($description, $warning, $script:loc.AdvtCaption))
            {
                if ($Force -or $PSCmdlet.ShouldContinue($null, $null, [ref] $YesToAll, [ref] $NoToAll))
                {
                    install-msiproduct @params
                }
            }
        }
    }
}

# Update the usage information for this module if installed.
[Microsoft.Tools.WindowsInstaller.PowerShell.Module]::Use()
content\MSI.psd1
 
content\MSI.formats.ps1xml
 
content\Microsoft.Tools.WindowsInstaller.PowerShell.dll-Help.xml
<?xml version="1.0" encoding="utf-8"?><helpItems schema="maml" xmlns="http://msh" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:maml="http://schemas.microsoft.com/maml/2004/10"><command:command><command:details><command:name>Add-MSISource</command:name><maml:description><maml:para>Adds a registered network source or URL from a product or patch.</maml:para></maml:description><command:verb>Add</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will add a network source or URL to a product or patch and optionally return the remaining registered source locations through the pipeline.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Add-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to register. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Add-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to register. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to register. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to register. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>add-msisource '{707ABAE4-4DC5-478C-9D36-7CC5C1A85A3C}' 'C:\Package Cache\'</dev:code><dev:remarks><maml:para>Adds the C:\Package Cache source location from the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Clear-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Clear-MSISource</command:name><maml:description><maml:para>Clears all registered network sources and URLs from a product or patch.</maml:para></maml:description><command:verb>Clear</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will clear all network sources and URLs from a product or patch.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Clear-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo '{707ABAE4-4DC5-478C-9D36-7CC5C1A85A3C}' | clear-msisource</dev:code><dev:remarks><maml:para>Clears all registered source from the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Add-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Edit-MSIPackage</command:name><maml:description><maml:para>Opens an install package or patch in Orca or another registered editor.</maml:para></maml:description><command:verb>Edit</command:verb><command:noun>MSIPackage</command:noun></command:details><maml:description><maml:para>Orca can be installed from the Windows SDK. If installed, MSI and MSP packages can be opened in Orca. If Orca is not installed, any application registered with the "Edit" verb for .msi or .msp file extensions is used.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Edit-MSIPackage</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Wait</maml:name><maml:description><maml:para>Wait until the process is closed before opening another package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Edit-MSIPackage</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Wait</maml:name><maml:description><maml:para>Wait until the process is closed before opening another package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Wait</maml:name><maml:description><maml:para>Wait until the process is closed before opening another package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.msi -recurse | edit-msipackage</dev:code><dev:remarks><maml:para>Opens all install packages in the current directory or subdirectories in separate instances of Orca.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Export-MSIPatchXml</command:name><maml:description><maml:para>Exports an XML representation of applicability information from a patch package.</maml:para></maml:description><command:verb>Export</command:verb><command:noun>MSIPatchXml</command:noun></command:details><maml:description><maml:para>Windows Installer defines an XML schema that is representational of a patch package - specifically its applicability information. This allows administrators and bundle developers to not require downloading the patch package just to find out if it's applicable or even already installed.</maml:para><maml:para /><maml:para>This XML file can be passed to Get-MSIPatchSequence along with other XML files or patch packages.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Export-MSIPatchXml</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the patch package from which XML is exported.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>FilePath</maml:name><maml:description><maml:para>The path to the output XML file.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Encoding</maml:name><maml:description><maml:para>The encoding to use for the output XML file.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">System.Text.Encoding</command:parameterValue><dev:type><maml:name>System.Text.Encoding</maml:name></dev:type><dev:defaultValue>UTF8</dev:defaultValue></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Formatted</maml:name><maml:description><maml:para>Whether to indent the XML file.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Encoding</maml:name><maml:description><maml:para>The encoding to use for the output XML file.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">System.Text.Encoding</command:parameterValue><dev:type><maml:name>System.Text.Encoding</maml:name></dev:type><dev:defaultValue>UTF8</dev:defaultValue></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>FilePath</maml:name><maml:description><maml:para>The path to the output XML file.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Formatted</maml:name><maml:description><maml:para>Whether to indent the XML file.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the patch package from which XML is exported.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>export-msipatchxml .\example.msp .\example.xml -formatted</dev:code><dev:remarks><maml:para>Exports formatted XML from the example.msp patch package in the current directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIPatchSequence</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIComponentInfo</command:name><maml:description><maml:para>Gets information about components registered to the current user and the machine.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIComponentInfo</command:noun></command:details><maml:description><maml:para>Gets information about all the components registered to the current user and to the machine. You can also limit the components to only those installed by a particular product.</maml:para><maml:para /><maml:para>The information includes the state of the component and the path all based on the product that installed it, since multiple products can install the same component even to different locations.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIComponentInfo</maml:name><command:parameter aliases="ComponentId" required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIComponentInfo</maml:name><command:parameter aliases="ComponentId" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of the product that installed the components to retrieve information.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="ComponentId" required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of the product that installed the components to retrieve information.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ComponentInstallation</maml:name><maml:description><maml:para>Information about the components installed or registered by one or multiple products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msicomponentinfo</dev:code><dev:remarks><maml:para>This command gets all components installed or registered to the current user or to the machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo "{90120000-00BA-0409-0000-0000000FF1CE}" | get-msicomponentinfo -componentcode "{90120000-00BA-0409-0000-0E32E9F6E558}"</dev:code><dev:remarks><maml:para>This command gets information for the component "{90120000-00BA-0409-0000-0E32E9F6E558}" installed by the product "{90120000-00BA-0409-0000-0000000FF1CE}".</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIComponentState</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIComponentState</command:name><maml:description><maml:para>Gets the install state for all authored components for one or more products installed on the machine.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIComponentState</command:noun></command:details><maml:description><maml:para>Gets the install state for all components authored into one or more products. This includes all patches applied to the product. In addition to the information returned from Get-MSIComponentInfo, the authored component identifier from the Component table is attached along with a simple boolean property that determines if the component is installed locally or not.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIComponentState</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The products for which authored component state is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIComponentState</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The installed ProductCodes that define the components for which state information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The products for which authored component state is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The installed ProductCodes that define the components for which state information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Products for which authored component state is retrieved.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ComponentInstallation#State</maml:name><maml:description><maml:para>State information about the components authored into one or more products and applied patches.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msicomponentstate "{877EF582-78AF-4D84-888B-167FDC3BCC11}"</dev:code><dev:remarks><maml:para>Gets state information for all components authored into the product "{877EF582-78AF-4D84-888B-167FDC3BCC11}" and all applied patches.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name *TEST* | get-msicomponentstate</dev:code><dev:remarks><maml:para>Gets state information for all components authored into any product where the ProductName matches *TEST*.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIComponentInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIFeatureInfo</command:name><maml:description><maml:para>Gets information about features of an installed or advertised product.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIFeatureInfo</command:noun></command:details><maml:description><maml:para>A product must install or advertise one or more features. This cmdlet can query feature of a product or products to determine their state and optional usage data.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIFeatureInfo</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The ProductInstallation object that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIFeatureInfo</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Name" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>FeatureName</maml:name><maml:description><maml:para>The names of the features for which information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="Name" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>FeatureName</maml:name><maml:description><maml:para>The names of the features for which information is retrieved.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="0"><maml:name>Product</maml:name><maml:description><maml:para>The ProductInstallation object that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode that installed or advertised specified features.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>The product or products for which features are enumerated.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.FeatureInstallation</maml:name><maml:description><maml:para>Information about the features installed or advertised by one or multiple products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo "{90120000-00BA-0409-0000-0000000FF1CE}" | get-msifeatureinfo | format-table -view Usage</dev:code><dev:remarks><maml:para>Gets the usage information for all the features installed by the product "{90120000-00BA-0409-0000-0000000FF1CE}".</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msifeatureinfo "{90120000-00BA-0409-0000-0000000FF1CE}" "GrooveFilesIntl_1033"</dev:code><dev:remarks><maml:para>Gets state information for the feature "GrooveFilesIntl_1033" installed by product "{90120000-00BA-0409-0000-0000000FF1CE}".</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIFileHash</command:name><maml:description><maml:para>Gets a hash of a file in a Windows Installer-compatible format.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIFileHash</command:noun></command:details><maml:description><maml:para>Get-MSIFileHash returns a 128-bit file hash in 4 separate parts, compatible with columns in the MsiFileHash table in Windows Installer packages. All non-versioned files should contain this hash.</maml:para><maml:para /><maml:para>You can optionally add these HashPart1, HashPart2, HashPart3, and HashPart4 properties to FileSystem items.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIFileHash</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with additional properties for the file hash.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIFileHash</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with additional properties for the file hash.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with additional properties for the file hash.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.FileHash</maml:name><maml:description><maml:para>If -passthru is not specified, Get-MSIFileHash returns a FileHash object containing the file hash in 4 parts.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.DirectoryInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a directory, the directory is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.FileInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a file, the file is returned.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msifilehash -path * | format-table -auto</dev:code><dev:remarks><maml:para>This command outputs the file hash of every file in the current directory as a table.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem | where-object {$_.PSIsContainer -eq $False} | get-msifilehash -passthru | format-table Name, MSI* -auto</dev:code><dev:remarks><maml:para>This command outputs the name and hash parts of each file in the current directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIFileType</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIFileType</command:name><maml:description><maml:para>Gets the Windows Installer file type.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIFileType</command:noun></command:details><maml:description><maml:para>Gets the Windows Installer file type for a given file or files.</maml:para><maml:para /><maml:para>You can optionally add this MSIFileType property to FileSystem items.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIFileType</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with the additional property for the file type.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIFileType</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with the additional property for the file type.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Passes the item or items passed into this cmdlet through the pipeline with the additional property for the file type.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to the item or items which must resolve to a file system path. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>string</maml:name><maml:description><maml:para>If -passthru is not specified, Get-MSIFileType returns a string object.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.DirectoryInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a directory, the directory is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.FileInfo</maml:name><maml:description><maml:para>If -passthru is specified and the input object is a file, the file is returned.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msifilehash -path $env:WINDIR\Installer</dev:code><dev:remarks><maml:para>This command outputs the file type of files in the Windows Installer cache directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -path $env:WINDIR\Installer\* | where-object {$_.PSIsContainer -eq $False} | get-msifiletype -passthru | format-table Name, MSIFileType -auto</dev:code><dev:remarks><maml:para>This command outputs the Windows Installer file type for files in the Windows Installer cache directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIFileHash</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSILoggingPolicy</command:name><maml:description><maml:para>Gets the Windows Installer logging policy.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSILoggingPolicy</command:noun></command:details><maml:description><maml:para>The Windows Installer logging policy determines whether logs are generated by default and how much information they contain. This cmdlet gets the current logging policy and can return the logging modes as a collection of strings or the raw string value from the registry.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSILoggingPolicy</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>string</maml:name><maml:description><maml:para>If -raw is specified and a logging policy set, the raw registry value is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>string[]</maml:name><maml:description><maml:para>The default output type consisting of zero or more logging modes that are set in the registry.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><maml:relatedLinks><maml:navigationLink><maml:linkText>Remove-MSILoggingPolicy</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Set-MSILoggingPolicy</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIPatchInfo</command:name><maml:description><maml:para>Gets patch information for registered patches.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIPatchInfo</command:noun></command:details><maml:description><maml:para>Gets patch information for a given patch or for all patches registered to a given product or products. You can get patch information for machine-registered patches, and patch information for both user-managed- and user-unmanaged-registered patches for the current or another user.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIPatchInfo</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>Specifies the ProductCode or ProductCodes to get patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code or patch codes to retrieve patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged patches for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Filter</maml:name><maml:description><maml:para>The state or states of patches to be retrieved. This can be a combination of "Applied", "Superseded", "Obsoleted", "Registered", or "All".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.PatchStates</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchStates</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered patches. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged patches.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged patches for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Filter</maml:name><maml:description><maml:para>The state or states of patches to be retrieved. This can be a combination of "Applied", "Superseded", "Obsoleted", "Registered", or "All".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.PatchStates</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchStates</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="1"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code or patch codes to retrieve patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>Specifies the ProductCode or ProductCodes to get patch information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered patches. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged patches.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation</maml:name><maml:description><maml:para>Information about patches applied or registered to a product or products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msipatchinfo</dev:code><dev:remarks><maml:para>This command outputs a table of patch information for all applied patches on the machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msipatchinfo -filter superseded | get-childitem</dev:code><dev:remarks><maml:para>This command gets file information for superseded patches on the machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 3 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo | where-object {$_.Name -match "Office"} | get-msipatchinfo -filter all</dev:code><dev:remarks><maml:para>This command gets patch information for all patches applied to products with "Office" in the name.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIPatchSequence</command:name><maml:description><maml:para>Given a list of patches or patch XML, outputs the sequence of applicable patches for a product or products.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIPatchSequence</command:noun></command:details><maml:description><maml:para>Patch packages or patch XML files can be specified along with a list of products. Each patch is added to a list and after all patches specified are processed, the sequence for all applicable patches is output for each product specified.</maml:para><maml:para /><maml:para>By default, the table format is used with a grouping for each product specified.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>PackagePath</maml:name><maml:description><maml:para>The path to a product package or packages for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>PackagePath</maml:name><maml:description><maml:para>The path to a product package or packages for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes for products for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIPatchSequence</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes for products for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>PackagePath</maml:name><maml:description><maml:para>The path to a product package or packages for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="false" position="1"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes for products for which the patch sequence is returned.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSequence</maml:name><maml:description><maml:para>The sequence information for each applicable patch to a product or product package.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues></command:command><command:command><command:details><command:name>Get-MSIProductInfo</command:name><maml:description><maml:para>Gets product information for registered products.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIProductInfo</command:noun></command:details><maml:description><maml:para>Gets product information for all per-machine, user-managed, and user-unmanaged products on the machine.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIProductInfo</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to retrieve product information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged products for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIProductInfo</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged products for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Name</maml:name><maml:description><maml:para>The name of a product or products to retrieve. Wildcards are supported.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Everyone</maml:name><maml:description><maml:para>Whether to retrieve user-managed or user-unmanaged products for everyone.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Name</maml:name><maml:description><maml:para>The name of a product or products to retrieve. Wildcards are supported.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to retrieve product information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The context for registered products. This can be a combination of "Machine", "UserManaged", or "UserUnmanaged".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The security identifier for a user for user-managed and user-unmanaged products.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information about the installed or advertised product. To see just the advertised properties use the PSAdvertised property set; or, to see just the installed properties use the PSInstalled property set.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo</dev:code><dev:remarks><maml:para>This command outputs product information for all registered products assigned to this machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo | where-object {$_.Name -match "Visual Studio"}</dev:code><dev:remarks><maml:para>This command outputs all product information for products with "Visual Studio" in the name assigned to this machine.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 3 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -installcontext userunmanaged | where-object {$_.ProductState -eq "Installed"} | get-childitem</dev:code><dev:remarks><maml:para>This command gets file information for all installed user-unmanaged products.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 4 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo "{1862162E-3BBC-448F-AA63-49F33152D54A}"</dev:code><dev:remarks><maml:para>This command gets product information for the given ProductCode.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIPatchInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSIRelatedProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIProperty</command:name><maml:description><maml:para>Gets properties from a product or patch package.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIProperty</command:noun></command:details><maml:description><maml:para>Selects all or matching properties from a product or patch package and either returns them to the pipeline or attaches them to a file object for a product or patch package if -PassThru is specified. When propertie are attached to a file object you can select them all using the "MSIProperties" property set.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIProperty</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="0"><maml:name>Property</maml:name><maml:description><maml:para>Optional list of property names to select. Wildcard are permitted.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product or patch package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the file object back to the pipeline with selected properties attached.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSIProperty</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="0"><maml:name>Property</maml:name><maml:description><maml:para>Optional list of property names to select. Wildcard are permitted.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product or patch package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the file object back to the pipeline with selected properties attached.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product or patch package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the file object back to the pipeline with selected properties attached.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product or patch package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="0"><maml:name>Property</maml:name><maml:description><maml:para>Optional list of property names to select. Wildcard are permitted.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.Record</maml:name><maml:description><maml:para>The selected properties from the product or patch package.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>System.IO.FileInfo</maml:name><maml:description><maml:para>The original file object with selected properties attached and referenced by the "MSIProperties" property set.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproperty Product*, UpgradeCode -path example.msi</dev:code><dev:remarks><maml:para>Gets the identifying properties from the example.msi product package.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.msi | get-msiproperty -passthru | select Name, MSIProperties</dev:code><dev:remarks><maml:para>Attaches all properties from each product package and shows them all along with the file name.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSITable</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSIRelatedProductInfo</command:name><maml:description><maml:para>Gets product information for related products.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSIRelatedProductInfo</command:noun></command:details><maml:description><maml:para>Gets product information for related products based on an UpgradeCode.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSIRelatedProductInfo</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>UpgradeCode</maml:name><maml:description><maml:para>The UpgradeCode for related products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>UpgradeCode</maml:name><maml:description><maml:para>The UpgradeCode for related products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information about the installed or advertised product. To see just the installed properties use the PSInstalled property set.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msirelatedproductinfo "{B4160C68-1EA5-458F-B1EA-E69B41E44007}"</dev:code><dev:remarks><maml:para>This command gets all related products based on their UpgradeCode.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSISharedComponentInfo</command:name><maml:description><maml:para>Gets information about shared components installed or registered for the current user or the machine.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSISharedComponentInfo</command:noun></command:details><maml:description><maml:para>Shared components are component which are installed to the same directory by one or more products. This cmdlet gets information about all or specified shared components installed for the current user or the machine.</maml:para><maml:para /><maml:para>The output is already sorted by ComponentCode then ProductCode.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSISharedComponentInfo</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>Count</maml:name><maml:description><maml:para>The minimum number count for shared components returned. The absolute minimum is 2.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Int32</command:parameterValue><dev:type><maml:name>Int32</maml:name></dev:type><dev:defaultValue>2</dev:defaultValue></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="0"><maml:name>ComponentCode</maml:name><maml:description><maml:para>The component GUIDs to retrieve information.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1"><maml:name>Count</maml:name><maml:description><maml:para>The minimum number count for shared components returned. The absolute minimum is 2.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Int32</command:parameterValue><dev:type><maml:name>Int32</maml:name></dev:type><dev:defaultValue>2</dev:defaultValue></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ComponentInstallation</maml:name><maml:description><maml:para>Information about the shared components installed or registered by one or more products.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msisharedcomponentinfo -count 4 | format-table -view Clients</dev:code><dev:remarks><maml:para>Gets shared components installed by at least 4 products (or features) and displays them in a table grouped by ComponentCode.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIComponentInfo</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSISource</command:name><maml:description><maml:para>Gets the registered network source or URLs for a product or patch.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will enumerate those locations registered to a product or patch.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo | get-msisource</dev:code><dev:remarks><maml:para>Gets the registered source for all installed products on the machine.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Add-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Clear-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Get-MSISummaryInfo</command:name><maml:description><maml:para>Gets the summary information from a product or patch package, or from a transform.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSISummaryInfo</command:noun></command:details><maml:description><maml:para>The summary information stream is used by Windows Installer to determine applicability, version requirements, and more. Use this command to view the summary information for a product or patch package, or a transform. The properties returned are adapted for each file type.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSISummaryInfo</maml:name><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package or transform to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Transforms" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IncludeTransforms</maml:name><maml:description><maml:para>Whether to enumerate the transforms within a patch package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSISummaryInfo</maml:name><command:parameter aliases="Transforms" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IncludeTransforms</maml:name><maml:description><maml:para>Whether to enumerate the transforms within a patch package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package or transform to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="Transforms" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IncludeTransforms</maml:name><maml:description><maml:para>Whether to enumerate the transforms within a patch package.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package or transform to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package or transform to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.Package.TransformInfo</maml:name><maml:description><maml:para>Summary information for a transform within a patch package.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SummaryInfo</maml:name><maml:description><maml:para>Summary information for a product or patch package, or a transform.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.ms* | get-msisummaryinfo</dev:code><dev:remarks><maml:para>Gets summary information for any file matching *.ms*, including .msi, .msp, and .mst packages.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msisummaryinfo *.msp -includetransforms</dev:code><dev:remarks><maml:para>Gets the patch and embedded transform summary information.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Get-MSITable</command:name><maml:description><maml:para>Selects records from a table or custom query from a product or patch package.</maml:para></maml:description><command:verb>Get</command:verb><command:noun>MSITable</command:noun></command:details><maml:description><maml:para>You can query all records from a table or records matching a custom query from a product or patch package. The Windows Installer SDK has more information about custom queries, since the SQL-like syntax is rather constrained.</maml:para><maml:para /><maml:para>When no table or query is provided all tables from the package are displayed. Specifying a patch or transform will cause tables added by the patch or transform to be displayed, along with the operation performed on that table by the patch or transform in the MSIOperation property.</maml:para><maml:para /><maml:para>Records are returned with properties matching column names. If records are selected from a single table, the table name is also part of the type name queryable from the PSTypeNames object property. If the column name is prefixed with the table name - required to disambiguate names, or optional otherwise - a property is returned as typed in the original query string. Note that Windows PowerShell allows periods in property names but may require in some scenarios that a property name with periods is contained in quotes, like 'File.Attributes'.</maml:para><maml:para /><maml:para>For attribute columns in standard Windows Installer tables, you may also query for specific attribute values by specifying a special property name on the end of the attribute column name, like 'File.Attributes'.HasVital, to query for any columns that have the attribute value set. You can define an $MsiAttributeColumnFormat variable to control the display format of attribute columns, though the underlying value will not be changed. Run 'help about_MSI' for more information.</maml:para><maml:para /><maml:para>Note that patch packages do not typically have more than a couple of tables. The patch has to be applied to a product package to view any changes it has made. When applying a patch or transforms, records will contain an operation performed on the record by the patch or transform in the MSIOperation property.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="1"><maml:name>Product</maml:name><maml:description><maml:para>An installed product to query.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IgnoreMachineState</maml:name><maml:description><maml:para>Whether to apply any patches current installed to the product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type><dev:defaultValue>false</dev:defaultValue></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="1"><maml:name>Product</maml:name><maml:description><maml:para>An installed product to query.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IgnoreMachineState</maml:name><maml:description><maml:para>Whether to apply any patches current installed to the product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type><dev:defaultValue>false</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Get-MSITable</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>IgnoreMachineState</maml:name><maml:description><maml:para>Whether to apply any patches current installed to the product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type><dev:defaultValue>false</dev:defaultValue></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to open. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package to apply to the product package. Multiple patches are applied in authored sequence order.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to open. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="1"><maml:name>Product</maml:name><maml:description><maml:para>An installed product to query.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Query</maml:name><maml:description><maml:para>A custom query for which records are selected. Ambiguous column names must be prefixed with the table name to which they belong.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>Table</maml:name><maml:description><maml:para>The table from which all records are selected. If no table name is provided all tables in the database are displayed.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform to apply to the product package.</maml:para><maml:para /><maml:para>Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>An existing product to query. By default any patches already applied to the product are applied to the database.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.Record</maml:name><maml:description><maml:para>Selected records for a table or custom query where properties match column names.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.TableInfo</maml:name><maml:description><maml:para>Information about a table contained in the database or added by a patch or transform.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msitable .\example.msi -table Property</dev:code><dev:remarks><maml:para>Gets all records from the Property table.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>$productCode = get-msitable .\example.msi -table Property | where-object { $_.Property -eq "ProductCode" } | select-object -expand Value</dev:code><dev:remarks><maml:para>Selects just the ProductCode property from the example.msi package and assigns the value to a variable.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 3 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-childitem -filter *.msi | get-msitable -query "SELECT ComponentId, FileName, FileSize FROM Component, File WHERE Component_ = Component"</dev:code><dev:remarks><maml:para>Selects the component GUID, file name, and file size for all files in all packages in the current directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 4 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msitable .\example.msi -query "SELECT ComponentId, FileName, File.Attributes FROM Component, File WHERE Component_ = Component" | where-object { $_.'File.Attributes'.HasVital }</dev:code><dev:remarks><maml:para>Selects all vital files and displays the component GUID, file name, and all file attribtes from the example.msi package.</maml:para><maml:para /><maml:para>Note that in the query filter the 'File.Attributes' column is contained in quotes; otherwise, Windows PowerShell will attempt to filter based on an Attributes property of a File property of the current pipeline object. The 'File.Attributes' column is contained in quotes in the original query because the Component table also contains a column named Attributes. Windows Installer requires that you disambiguate column names.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 5 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msitable .\example.msi -patch .\example.msp | get-msitable | where-object { $_.MSIOperation -ne 'None' }</dev:code><dev:remarks><maml:para>Gets all records in the example.msi package added or modified by the example.msp patch package.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 6 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo '{877EF582-78AF-4D84-888B-167FDC3BCC11}' | get-msitable -table Property</dev:code><dev:remarks><maml:para>Selects records from the installed product along with any patches currently installed.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSIProperty</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Install-MSIAdvertisedFeature</command:name><maml:description><maml:para>Installs advertised features.</maml:para></maml:description><command:verb>Install</command:verb><command:noun>MSIAdvertisedFeature</command:noun></command:details><maml:description><maml:para>Some or all features can be advertised for a product. This may be by design or incidental if certain patching problems occur. You can use this cmdlet to to install some or all advertise features for some or all products.</maml:para><maml:para /><maml:para>You can also scan for all advertised features using the -WhatIf parameter to see what would be done to your system without performing those operations. Use -Confirm if you want to approve the operation to each product.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Install-MSIAdvertisedFeature</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>FeatureName</maml:name><maml:description><maml:para>One or more specific features to install. Feature names are case-sensitive.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="cf" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Confirm</maml:name><maml:description><maml:para>Confirm installing advertised features for each product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Perform each operation without confirmation.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>One or more ProductCodes to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName, FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the installation operation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="wi" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>WhatIf</maml:name><maml:description><maml:para>Show what operations would be performed without actually performing them.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIAdvertisedFeature</maml:name><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>FeatureName</maml:name><maml:description><maml:para>One or more specific features to install. Feature names are case-sensitive.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="cf" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Confirm</maml:name><maml:description><maml:para>Confirm installing advertised features for each product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Perform each operation without confirmation.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>One or more products passed through the pipeline to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName, FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the installation operation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="wi" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>WhatIf</maml:name><maml:description><maml:para>Show what operations would be performed without actually performing them.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="cf" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Confirm</maml:name><maml:description><maml:para>Confirm installing advertised features for each product.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>FeatureName</maml:name><maml:description><maml:para>One or more specific features to install. Feature names are case-sensitive.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Perform each operation without confirmation.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>One or more products passed through the pipeline to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>One or more ProductCodes to limit which products are scanned for advertised features.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName, FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the installation operation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="wi" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>WhatIf</maml:name><maml:description><maml:para>Show what operations would be performed without actually performing them.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>An existing product for which advertised features should be installed.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>install-msiadvertisedfeature -whatif</dev:code><dev:remarks><maml:para>Scans all features in all products for advertised features and reports what operation would be performed.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo '{12341234-1234-1234-1234-123412341234}' | install-msiadvertisedfeature Complete</dev:code><dev:remarks><maml:para>Installs the 'Complete' feature for the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSIProductInfo</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Install-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Install-MSIPatch</command:name><maml:description><maml:para>Installs a patch package or packages for all or only specified products.</maml:para></maml:description><command:verb>Install</command:verb><command:noun>MSIPatch</command:noun></command:details><maml:description><maml:para>You can install one or more patch packages to all installed targets products or to just a subset of products.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Install-MSIPatch</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to install to other products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to install to other products.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes to which the patch or patches should be applied.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation</maml:name><maml:description><maml:para>Information for the newly installed patch or patches.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>install-msipatch .\example.msp MSIFASTINSTALL=2</dev:code><dev:remarks><maml:para>Install the example.msp patch package for all installed target products with MSIFASTINSTALL set to only do file costing before installation.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name TEST | install-msipatch .\example.msp -log $env:TEMP\patch.log -passthru</dev:code><dev:remarks><maml:para>Install the example.msp patch package only for the product with ProductName "TEST" and log to the TEMP directory.</maml:para><maml:para /><maml:para>Return information about the patch after logging.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Uninstall-MSIPatch</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Install-MSIProduct</command:name><maml:description><maml:para>Installs or modifies a product package.</maml:para></maml:description><command:verb>Install</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>Installs a product package or adds features to existing products.</maml:para><maml:para /><maml:para>Ultimately, this cmdlet can install, modify, repair, and even uninstall a product package or install patches but specialized cmdlets have been added for those tasks.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Install-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to install. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed product information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to install. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during install.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>An existing product to modify.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information for the newly installed or modified product.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>install-msiproduct .\example.msi NOBLOCK=1</dev:code><dev:remarks><maml:para>Installs the example.msi product package passing the ficticious NOBLOCK=1 property.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name TEST | install-msiproduct ADDLOCAL=Addin -log $env:TEMP\install.log</dev:code><dev:remarks><maml:para>Modifies the existing product with ProductName TEST to add the "Addin" feature locally and log to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIPatch</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Repair-MSIProduct</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Uninstall-MSIPatch</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Uninstall-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Measure-MSIProduct</command:name><maml:description><maml:para>Gets drive costs for components that would be installed to any drive.</maml:para></maml:description><command:verb>Measure</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>You can use this command to get the costs for components that will be installed to any drive mounted to the system. If multiple product packages are specified the total costs for all components in all specified products are returned.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Measure-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to measure. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before measuring. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the session.</maml:para><maml:para /><maml:para>Note that you can mark all features for installation using ADDLOCAL=ALL or set public directories using this parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before measuring.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Measure-MSIProduct</maml:name><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to measure. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before measuring. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the session.</maml:para><maml:para /><maml:para>Note that you can mark all features for installation using ADDLOCAL=ALL or set public directories using this parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before measuring.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="TargetDirectory" required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Destination</maml:name><maml:description><maml:para>The target directory where the product should be installed.</maml:para><maml:para /><maml:para>Note that the product package must be authored to support installing to TARGETDIR.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to measure. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before measuring. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to measure. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional properties to pass to the session.</maml:para><maml:para /><maml:para>Note that you can mark all features for installation using ADDLOCAL=ALL or set public directories using this parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before measuring.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>System.Management.Automation.PSDriveInfo</maml:name><maml:description><maml:para>A PSDriveInfo object with MSISpaceRequired and MSITemporarySpaceRequired properties attached (measured in bytes).</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>measure-msiproduct .\example.msi -patch .\example.msp -target X:\Example</dev:code><dev:remarks><maml:para>Gets the drive costs for example.msi with example.msp applied if installed to the X:\Example directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Remove-MSILoggingPolicy</command:name><maml:description><maml:para>Removes the Windows Installer logging policy.</maml:para></maml:description><command:verb>Remove</command:verb><command:noun>MSILoggingPolicy</command:noun></command:details><maml:description><maml:para>The Windows Installer logging policy determines whether logs are generated by default and how much information they contain. This cmdlet removes the current logging and debug policies.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Remove-MSILoggingPolicy</maml:name></command:syntaxItem></command:syntax><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSILoggingPolicy</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Set-MSILoggingPolicy</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Remove-MSISource</command:name><maml:description><maml:para>Removes a registered network source or URL from a product or patch.</maml:para></maml:description><command:verb>Remove</command:verb><command:noun>MSISource</command:noun></command:details><maml:description><maml:para>Windows Installer products and patches can have zero or more registered locations that direct Windows Installer where to look for package source. This cmdlet will remove a location registered to a product or patch and optionally return the remaining locations through the pipeline.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Remove-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to unregister. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Remove-MSISource</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to unregister. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The directory or URL to unregister. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to return the remaining registered source through the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>PatchCode</maml:name><maml:description><maml:para>The patch code for a patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The directory or URL to unregister. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="0"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode for a product or applied patch.</maml:para></maml:description><command:parameterValue required="true" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>All</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user SID for a product or patch.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.SourceInfo</maml:name><maml:description><maml:para>Source information for an installed product.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.PatchSourceInfo</maml:name><maml:description><maml:para>Source information for an applied patch.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>remove-msisource '{707ABAE4-4DC5-478C-9D36-7CC5C1A85A3C}' 'C:\Package Cache\'</dev:code><dev:remarks><maml:para>Removes the C:\Package Cache source location from the specified product.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Add-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Clear-MSISource</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Get-MSISource</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Repair-MSIProduct</command:name><maml:description><maml:para>Repairs or modifies a product package.</maml:para></maml:description><command:verb>Repair</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>By default, simply repairs an existing product. This cmdlet can also add or remove features, patches, or even uninstall but there are specialized cmdlets for that.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to repair. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to repair. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Repair-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to repair. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Whether to pass the newly installed patch information after installation to the pipeline.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to repair. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>An existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of an existing product to repair or modify.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during repair.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ReinstallMode</maml:name><maml:description><maml:para>The REINSTALLMODE to use. You can specify the value as a string in the format used by Windows Installer. The default is equivalent to "omus".</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.ReinstallModes</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ReinstallModes</maml:name></dev:type><dev:defaultValue>FileOlderVersion,MachineData,UserData,Shortcut</dev:defaultValue></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>The product to repair or modify.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>Information for the newly repaired product.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>repair-msiproduct -productcode {12341234-1234-1234-1234-123412341234} -reinstall "pecmsu" -log $env:TEMP\repair.log</dev:code><dev:remarks><maml:para>Repair the specified product using REINSTALLMODE="pecmsu" and log to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name *TEST* | repair-msiproduct -chain</dev:code><dev:remarks><maml:para>Repair all products with ProductName matching *TEST* and show a single progress bar for the entire operation.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIProduct</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Uninstall-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Set-MSILoggingPolicy</command:name><maml:description><maml:para>Sets the Windows Installer logging policy.</maml:para></maml:description><command:verb>Set</command:verb><command:noun>MSILoggingPolicy</command:noun></command:details><maml:description><maml:para>The Windows Installer logging policy determines whether logs are generated by default and how much information they contain. This cmdlet sets the logging policy and can return the logging modes as a collection of strings or the raw string value from the registry if -passthru is specified.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Set-MSILoggingPolicy</maml:name><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0"><maml:name>LoggingPolicy</maml:name><maml:description><maml:para>The logging mode to set in the registry. If "ExtraDebug" or "x" are set, the Debug policy is also set to 7; however, if neither are set the current Debug policy is not removed.</maml:para><maml:para /><maml:para>This can be a combination of "None", "ActionData", "ActionStart", "CommonData", "Error", "ExtraDebug", "FatalExit", "Information", "OutOfDiskSpace", "PropertyDump", "User", "Verbose", "Warning", "All", and "FlushEachLine"; or you can specify the Windows Installer command line options consisting of any combination of the characters "voicewarmupx!".</maml:para><maml:para /><maml:para>Note that "All" does not include "FlushEachLine", but is equivalent to "voicewarmupx".</maml:para></maml:description><command:parameterValue required="true" variableLength="false">Microsoft.Tools.WindowsInstaller.LoggingPolicies</command:parameterValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.LoggingPolicies</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Returns the logging modes set in the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Along with -passthru, returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0"><maml:name>LoggingPolicy</maml:name><maml:description><maml:para>The logging mode to set in the registry. If "ExtraDebug" or "x" are set, the Debug policy is also set to 7; however, if neither are set the current Debug policy is not removed.</maml:para><maml:para /><maml:para>This can be a combination of "None", "ActionData", "ActionStart", "CommonData", "Error", "ExtraDebug", "FatalExit", "Information", "OutOfDiskSpace", "PropertyDump", "User", "Verbose", "Warning", "All", and "FlushEachLine"; or you can specify the Windows Installer command line options consisting of any combination of the characters "voicewarmupx!".</maml:para><maml:para /><maml:para>Note that "All" does not include "FlushEachLine", but is equivalent to "voicewarmupx".</maml:para></maml:description><command:parameterValue required="true" variableLength="false">Microsoft.Tools.WindowsInstaller.LoggingPolicies</command:parameterValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.LoggingPolicies</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>PassThru</maml:name><maml:description><maml:para>Returns the logging modes set in the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Raw</maml:name><maml:description><maml:para>Along with -passthru, returns the raw string value from the registry.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>string</maml:name><maml:description><maml:para>If -passthru and -raw are specified and a logging policy set, the raw registry value is returned.</maml:para></maml:description></dev:type></command:returnValue><command:returnValue><dev:type><maml:name>string[]</maml:name><maml:description><maml:para>If -passthru is specified, the default output type consisting of zero or more logging modes that are set in the registry.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><maml:relatedLinks><maml:navigationLink><maml:linkText>Get-MSILoggingPolicy</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Remove-MSILoggingPolicy</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Test-MSIProduct</command:name><maml:description><maml:para>Runs internal consistency evaluators (ICEs) against the product package or packages.</maml:para></maml:description><command:verb>Test</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>Internal consistency evaluators (ICEs) are custom actions that validate whether a product is authored as specified. If Orca or MsiVal2 is installed, the default ICE .cub ("ICE cube") file is used by default, and you can specify custom ICE cube.</maml:para><maml:para /><maml:para>You can also apply any number of patches or transforms before running ICEs. This allows you to evaluate a product that is transformed by, for example, a patch to also make sure the changes made by a patch or valid.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Test-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to evaluate. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Cube" required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>AdditionalCube</maml:name><maml:description><maml:para>One or more ICE .cub files to use for evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Exclude</maml:name><maml:description><maml:para>The names of ICEs to exclude from evaluation (all other ICEs are included).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Include</maml:name><maml:description><maml:para>The names of ICEs to include from evaluation (all other ICEs are excluded).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>NoDefault</maml:name><maml:description><maml:para>Do not import darice.cub if installed with Orca or MsiVal2.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before evaluation. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Test-MSIProduct</maml:name><command:parameter aliases="Cube" required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>AdditionalCube</maml:name><maml:description><maml:para>One or more ICE .cub files to use for evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Exclude</maml:name><maml:description><maml:para>The names of ICEs to exclude from evaluation (all other ICEs are included).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Include</maml:name><maml:description><maml:para>The names of ICEs to include from evaluation (all other ICEs are excluded).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to evaluate. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>NoDefault</maml:name><maml:description><maml:para>Do not import darice.cub if installed with Orca or MsiVal2.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before evaluation. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter aliases="Cube" required="false" variableLength="true" globbing="false" pipelineInput="false" position="named"><maml:name>AdditionalCube</maml:name><maml:description><maml:para>One or more ICE .cub files to use for evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Exclude</maml:name><maml:description><maml:para>The names of ICEs to exclude from evaluation (all other ICEs are included).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Include</maml:name><maml:description><maml:para>The names of ICEs to include from evaluation (all other ICEs are excluded).</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a package to evaluate. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>NoDefault</maml:name><maml:description><maml:para>Do not import darice.cub if installed with Orca or MsiVal2.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>The path to a patch package or packages to apply to the product package before evaluation. Patches are applied in sequence order.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="1"><maml:name>Path</maml:name><maml:description><maml:para>The path to a package to evaluate. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="true" pipelineInput="false" position="named"><maml:name>Transform</maml:name><maml:description><maml:para>The path to a transform or transforms to apply to the product package before evaluation.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:returnValues><command:returnValue><dev:type><maml:name>Microsoft.Tools.WindowsInstaller.IceMessage</maml:name><maml:description><maml:para>Information generated from each ICE. Specifying -Verbose will show additional information from each ICE.</maml:para></maml:description></dev:type></command:returnValue></command:returnValues><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>test-msiproduct .\example.msi -include ICE0* -exclude ICE03 -v</dev:code><dev:remarks><maml:para>Output all messages from ICEs 01 through 09 except for ICE03.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>test-msiproduct .\example.msi -patch .\example.msp -add .\tests\custom.cub</dev:code><dev:remarks><maml:para>Apply example.msp to example.msi, then run all the default and custom ICEs.</maml:para><maml:para /></dev:remarks></command:example></command:examples></command:command><command:command><command:details><command:name>Uninstall-MSIPatch</command:name><maml:description><maml:para>Installs a patch package or packages for all or only specified products.</maml:para></maml:description><command:verb>Uninstall</command:verb><command:noun>MSIPatch</command:noun></command:details><maml:description><maml:para>Uninstalls one or more packages from all products which they're applied or only from the specified set of products based on their ProductCode.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Uninstall-MSIPatch</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIPatch</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a patch package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Patch</maml:name><maml:description><maml:para>Information about a patch or patches to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.PatchInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a patch package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode or ProductCodes from which patches are removed.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter aliases="Context InstallContext" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserContext</maml:name><maml:description><maml:para>The user context for the product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">Microsoft.Deployment.WindowsInstaller.UserContexts</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.UserContexts</maml:name></dev:type><dev:defaultValue>Machine</dev:defaultValue></command:parameter><command:parameter aliases="User" required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>UserSid</maml:name><maml:description><maml:para>The user security identifier for product listed in the ProductCode parameter.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter></command:parameters><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductifo -name TEST | get-msipatchinfo | uninstall-msipatch -log $env:TEMP\unpatch.log</dev:code><dev:remarks><maml:para>Uninstalls all patches applied to the product with ProductName TEST and logs to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIPatch</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command><command:command><command:details><command:name>Uninstall-MSIProduct</command:name><maml:description><maml:para>Uninstalls a product package or packages, or an existing product on the machine.</maml:para></maml:description><command:verb>Uninstall</command:verb><command:noun>MSIProduct</command:noun></command:details><maml:description><maml:para>This cmdlet, unlike related cmdlets, is designed to uninstalled one or more products. While there are ways to override this behavior, it is not recommend and you should instead use specialized cmdlets for this purpose. See the related links for suggestions.</maml:para><maml:para /><maml:para>Progress, warnings, and errors during the install are sent through the pipeline making this command fully integrated.</maml:para></maml:description><command:syntax><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>The product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem><command:syntaxItem><maml:name>Uninstall-MSIProduct</maml:name><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of a product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:syntaxItem></command:syntax><command:parameters><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Chain</maml:name><maml:description><maml:para>Whether to install all packages together. If elevated, a single restore point is created for all packages in the chain.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Force</maml:name><maml:description><maml:para>Whether to suppress all prompts.</maml:para></maml:description><dev:type><maml:name>SwitchParameter</maml:name></dev:type></command:parameter><command:parameter aliases="PSPath" required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>LiteralPath</maml:name><maml:description><maml:para>The path to a product package to uninstall. The value of -LiteralPath is used exactly as typed. No characters are interpreted as wildcards.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named"><maml:name>Log</maml:name><maml:description><maml:para>The path to the log file. This use the file name as the base name and will append timestamp and product-specific information.</maml:para></maml:description><command:parameterValue required="false" variableLength="false">String</command:parameterValue><dev:type><maml:name>String</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="true" pipelineInput="true (ByValue, ByPropertyName)" position="0"><maml:name>Path</maml:name><maml:description><maml:para>The path to a product package to uninstall. Wildcards are permitted. You can specify * in any part of the path to select all matching files.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByValue)" position="named"><maml:name>Product</maml:name><maml:description><maml:para>The product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</command:parameterValue><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation[]</maml:name></dev:type></command:parameter><command:parameter required="true" variableLength="true" globbing="false" pipelineInput="true (ByPropertyName)" position="named"><maml:name>ProductCode</maml:name><maml:description><maml:para>The ProductCode of a product to uninstall.</maml:para></maml:description><command:parameterValue required="true" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter><command:parameter required="false" variableLength="true" globbing="false" pipelineInput="true (FromRemainingArguments)" position="named"><maml:name>Properties</maml:name><maml:description><maml:para>Additional property=value pairs to pass during uninstall.</maml:para></maml:description><command:parameterValue required="false" variableLength="true">string[]</command:parameterValue><dev:type><maml:name>string[]</maml:name></dev:type></command:parameter></command:parameters><command:inputTypes><command:inputType><dev:type><maml:name>Microsoft.Deployment.WindowsInstaller.ProductInstallation</maml:name><maml:description><maml:para>The product to uninstall.</maml:para></maml:description></dev:type></command:inputType></command:inputTypes><command:examples><command:example><maml:title>-------------- EXAMPLE 1 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>uninstall-msiproduct .\example.msi -log $env:TEMP\uninstall.log</dev:code><dev:remarks><maml:para>Uninstall the example.msi product package and log to the TEMP directory.</maml:para><maml:para /></dev:remarks></command:example><command:example><maml:title>-------------- EXAMPLE 2 --------------</maml:title><maml:introduction><maml:para>C:\PS&gt;</maml:para></maml:introduction><dev:code>get-msiproductinfo -name *TEST* | uninstall-msiproduct -chain</dev:code><dev:remarks><maml:para>Uninstall all products with ProductName matching *TEST* and show a single progress bar for the entire operation.</maml:para><maml:para /></dev:remarks></command:example></command:examples><maml:relatedLinks><maml:navigationLink><maml:linkText>Install-MSIProduct</maml:linkText></maml:navigationLink><maml:navigationLink><maml:linkText>Repair-MSIProduct</maml:linkText></maml:navigationLink></maml:relatedLinks></command:command></helpItems>
content\about_MSI.help.txt
TOPIC
    about_MSI

DESCRIPTION
    Exposes Windows Installer functionality to PowerShell, providing means to
    query installed product and patch information and to query views on
    packages.


VARIABLES
    MsiAttributeColumnFormat
        The format specification string to alter how attributes are displayed.

        Valid values are:

        -- G:   Displays the integer value. This is the default.
        -- X:   Displays the hexadecimal integer value.
        -- F:   Displays one or more names for well-known attribute types.

ONLINE
    https://psmsi.codeplex.com/documentation

LICENSE
    https://psmsi.codeplex.com/license

HISTORY
    See http://psmsi.codeplex.com/releases for up-to-date information.

	2.3.0
		This release adds support for per-machine installs of the module.
		Administrators may choose this option for enterprise deployment
		or to make the module available to remote sessions.

		Several performance enhancements were made in addition to bug fixes:
		-- PSPath property for components only resolves full path when used.
		-- Export-MSIPatchXml no longer requires full path to patch MSP.
		-- Get-MSITable can apply patch MSPs to not-installed product MSIs.

		Piping components to Get-ChildItem now also works correctly for
		file system and registry key paths. To support this behavior, a
		KeyPath property was added that contains the non-transformed path
		previously contained within the PSPath property.

	2.2.1
		This release is a servicing issue and fixes various issues, notably:
		-- Returns the correct 32- or 64-bit registry path.
		-- Module can correctly be loaded into PowerShell v2.
		-- Older versions of Orca are now supported.
		-- The Record property adapter is now case-insensitive.

		The Get-MSITable cmdlet now also supports applying patches in
		sequence order and transforms.

    2.2.0
        This release adds many new cmdlets from the past release, including
        cmdlets to select records from a table or custom query, run ICEs on a
        package, and install, repair, or uninstall packages. The install,
        repair, and uninstall cmdlets also display progress, warning, and
        error information. Some issues were fixed as well.

        The snap-in installer has been removed in favor of the module
        installer - a per-user install that will upgrade any previous version.
        You may also install the package to a per-machine location, though
        elevation is required. This will make the module accessible to any
        host for any user on the machine.
LICENSE.txt
Microsoft Limited Permissive License (Ms-LPL)

This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.

1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor�s patent claims that read directly on its contribution.

2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.

3. Conditions and Limitations
(A) No Trademark License- This license does not grant you rights to use any contributors� name, logo, or trademarks.
(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
(F) Platform Limitation- The licenses granted in sections 2(A) & 2(B) extend only to the software or derivative works that you create that run on a Microsoft Windows operating system product.

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status
psmsi 2.3.0.0 675 Saturday, December 27, 2014 Approved

Discussion for the psmsi Package

Ground Rules:

  • This discussion is only about psmsi and the psmsi package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or psmsi, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus