Restore-GPO

Restores one GPO or all GPOs in a domain from one or more GPO backup files.

Syntax

Restore-GPO
       -BackupId <Guid>
       -Path <String>
       [-Domain <String>]
       [-Server <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restore-GPO
       -Guid <Guid>
       -Path <String>
       [-Domain <String>]
       [-Server <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restore-GPO
       [-Name] <String>
       -Path <String>
       [-Domain <String>]
       [-Server <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restore-GPO
       -Path <String>
       [-Domain <String>]
       [-Server <String>]
       [-All]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

The Restore-GPO cmdlet restores a Group Policy Object (GPO) backup to the original domain from which it was saved. If the original domain is not available, or if the GPO no longer exists in the domain, the cmdlet fails.

You can:

  • Use the Guid parameter or the Name parameter to restore a GPO from its most recent backup.

  • Use the All parameter to restore all GPOs in the domain from their most recent backups.

  • Use the BackupId parameter to restore a GPO from a specific backup. This parameter enables you to restore a GPO from a backup prior to the most recent one.

Examples

Example 1: Restore a GPO from a directory

PS C:\> Restore-GPO -Name "TestGPO" -Path "\\Server1\Backups"

This command restores the GPO named TestGPO from the \\Server1\Backups directory. The most recent backup is restored.

Example 2: Restore a GPO from a directory using the GPOs GUID

PS C:\> Restore-GPO -GUID fa4a9473-6e2a-4b87-ab78-175e68d97bde -Path "\\Server1\Backups"

This command restores the GPO with the GUID fa4a9473-6e2a-4b87-ab78-175e68d97bde from the \\Server1\Backups directory. The most recent backup is restored.

Example 3: Restore all GPOs in a domain that were previously backed up to a directory

PS C:\> Restore-GPO -All -Domain "contoso.com" -Path "\\Server1\Backups"

This command restores all of the GPOs in the contoso.com domain previously backed up to \\Server1\Backup. Each GPO is restored using its most recent backup.

If the domain of user that is running the session (or, for a startup or shutdown script, the domain of the computer) is different from the contoso.com domain, a trust must exist between the two domains or the command fails.

Example 4: Restore a GPO using its backup ID

PS C:\> Restore-GPO -BackupId 0fc29b3c-fb83-4076-babb-6194c1b4fc26 -Path "\\Server1\Backups"

This command restores a GPO from the backup specified by the BackupId parameter. The BackupId parameter can be used to restore a GPO from a backup prior to the most recent backup.

Parameters

-All

Indicates that the cmdlet restores all GPOs in the domain that have backups in the backup directory. Each GPO is restored from its most recent backup in the directory.

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-BackupId

Specifies the backup ID of a GPO backup. The backup ID is a globally unique identifier (GUID) that uniquely identifies the backup. You can use this parameter to specify a particular version of a backed-up GPO in the backup directory.

The backup ID is different from the ID of the GPO that was backed up (specified by the Guid parameter), you can find the backup ID in the backup directory.

Type:Guid
Aliases:Id
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Domain

Specifies the domain for this cmdlet. You must specify the fully qualified domain name (FQDN) of the domain.

For the Restore-GPO cmdlet, this is the domain in which you want to restore the GPO. This must be the domain from which the GPO was backed up.

If you do not specify the Domain parameter, the domain of the user that is running the current session is used. If the cmdlet is being run from a computer startup or shutdown script, the domain of the computer is used. For more information, see the Notes section in the full Help.

If you specify a domain that is different from the domain of the user that is running the current session (or, for a startup or shutdown script, the computer), a trust must exist between that domain and the domain of the user or the computer.

You can also refer to the Domain parameter by its built-in alias, domainname. For more information, see about_Aliases.

Type:String
Aliases:DomainName
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Guid

Specifies the GPO to restore by its globally unique identifier (GUID). The GUID uniquely identifies the GPO.

The GPO is restored from its most recent backup in the backup directory. To specify a different backup than the most recent backup, use the BackupId parameter.

You can also refer to the Guid parameter by its built-in alias, id.

Type:Guid
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifies the GPO to restore by its display name. The GPO is restored from its most recent backup in the backup directory. To specify a different backup than the most recent backup, use the BackupId parameter.

The display name is not guaranteed to be unique in the domain. If another GPO with the same display name exists in the domain an error occurs. You can use the Guid parameter to uniquely identify a GPO.

You can also refer to the Name parameter by its built-in alias, displayname.

Type:String
Aliases:DisplayName
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Path

Specifies the path to the backup directory.

You can also refer to the Path parameter by its built-in alias, backuplocation.

Type:String
Aliases:backupLocation, BackupDirectory
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Server

Specifies the name of the domain controller that this cmdlet contacts to complete the operation. You can specify either the fully qualified domain name (FQDN) or the host name.

If you do not specify the name by using the Server parameter, the primary domain controller (PDC) emulator is contacted.

You can also refer to the Server parameter by its built-in alias, dc.

Type:String
Aliases:DC
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Inputs

Microsoft.GroupPolicy.BackupGpo

You can pipe a GPO backup, a separate file that holds the settings of a GPO that can be imported elsewhere to recreate the GPO to this cmdlet.

Outputs

Microsoft.GroupPolicy.Gpo

This cmdlet returns the restored GPO.

Notes

  • You can use the Domain parameter to explicitly specify the domain for this cmdlet.

    If you do not explicitly specify the domain, the cmdlet uses a default domain. The default domain is the domain that is used to access network resources by the security context under which the current session is running. This domain is typically the domain of the user that is running the session. For instance, the domain of the user who started the session by opening Windows PowerShell from the Program Files menu, or the domain of a user that is specified in a runas command. However, computer startup and shutdown scripts run under the context of the LocalSystem account. The LocalSystem account is a built-in local account, and it accesses network resources under the context of the computer account. Therefore, when this cmdlet is run from a startup or shutdown script, the default domain is the domain to which the computer is joined.