首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于GPO DisplayName而不是Id的备份GPO

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

Stack Overflow用户
提问于 2015-10-21 09:39:48
回答 1查看 1.2K关注 0票数 3

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

下面是一个示例,我将只备份一个特定的GPO:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
{DD33C220-BAC8-4EBD-A9D9-7729FCEA9C38}

如果我试图备份所有的GPO,我会为每个GPO提供一个文件夹。有没有任何方法可以根据GPO DisplayName而不是那个不友好的字符串来命名这些文件夹?

这就是我想得到的:

代码语言:javascript
复制
N12 Workstation Policy

我之所以要这样做,是因为如果我想在将来重新导入一个GPO,并且我不记得GPO的名称,我怎么知道如果我使用那个糟糕的名称,哪个是要导入的GPO备份文件夹?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 13:17:29

备份每个GPO以分离备份文件夹的子文件夹:

代码语言:javascript
复制
$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不支持它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33255813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档