繁体   English   中英

基于GPO DisplayName而不是Id的备份GPO

[英]Backup GPOs basing on GPO DisplayName rather than Id

所以我正在备份域控制器的所有GPO,我注意到Backup-GPO cmdlet备份GPOS的方式非常不友好。 默认情况下,它为每个以“ID”命名的GPO创建一个文件夹,该ID甚至不匹配其“GPOID / GUID”。

这是一个例子,我将备份一个特定的GPO:

backup-gpo -guid ff8de365-0842-46ab-9ac7-64ebd8dd4614 -path C:\


DisplayName     : N12 Workstation Policy
GpoId           : ff8de365-0842-46ab-9ac7-64ebd8dd4614
Id              : dd33c220-bac8-4ebd-a9d9-7729fcea9c38
BackupDirectory : C:\
CreationTime    : 20/10/2015 17:41:43
DomainName      : martyn.local

这是在发出上一个命令后创建的备份文件夹名称:

{DD33C220-BAC8-4EBD-A9D9-7729FCEA9C38}

如果我尝试备份所有GPO,我会为每个GPO获取一个文件夹。 有没有办法根据GPO DisplayName命名这些文件夹而不是那个不友好的字符串?

这就是我想得到的:

N12 Workstation Policy

我想这样做的原因是因为如果我想在将来重新导入单个GPO并且我不记得GPO的名称我怎么知道哪个是正确的GPO备份文件夹到如果我使用那个可怕的名字导入?

谢谢

将每个GPO备份到备份文件夹的单独子文件夹:

$invalidChars = ':\\/' + [RegEx]::Escape(-join [IO.Path]::InvalidPathChars)

$backupDir = 'C:\backup'
Get-GPO -All | ForEach-Object {
  $name = $_.DisplayName -replace "[$invalidChars]", '_'
  $gpoDir = Join-Path $backupDir -ChildPath $name
  New-Item $gpoDir -Type Directory | Out-Null
  Backup-GPO -Guid $_.Id -Path $gpoDir
}

替换是从名称中删除路径中无效的字符(如果GPO的名称包含例如> ,则子文件夹的创建将失败)。 正如@briantist在他的评论中建议的那样,最好从相应的IO.Path属性中导出无效字符列表,而不是手动维护列表。 您可能需要手动添加其他有问题的字符,具体: 冒号用于访问备用数据流 ,因此从技术上讲它是路径中的有效字符,但PowerShell不支持它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM