0

我正在创建一个带有基于菜单的输出的 Active Directory 还原脚本。该脚本的功能之一是使用 ntdsutil.exe 将 Active Directory 对象设置为权威

我遇到的问题是,如果您手动键入命令,您将执行以下操作:

  • 键入ntdsutil然后按Enter
  • 键入激活实例 ntds,然后按Enter
  • 键入权威恢复,然后按Enter
  • 键入restore subtree "OU=Users,DC=Contoso,DC=com"然后按Enter
  • 输入退出
  • 输入退出

如果我想使用脚本完成所有这些操作,那么在脚本中的文本应如下所示:

$ntdsutil_job = "ntdsutil" + " " + '"' + "激活实例 ntds" + '"' + " " + '"' + "权威恢复" + '"' + " " + "'" + "restore" + $Restore_Type + " " + '"' + $Object + '"' + "'" + " " + "quit 退出"

变量如下所示:

ntdsutil "activate instance ntds" "authoritative restore" 'restore Subtree "OU=Users,DC=Contoso,DC=com"' quit 退出

然后在我输入的脚本中:

调用表达式 $ntdsutil_job

一切正常,直到 OU 中有一个空间,例如:

OU=测试容器,DC=Contoso,DC=com

如果我输入'OU=Test Container,DC=Contoso,DC=com', ntdsutil接受

经过长时间的测试,我发现唯一的方法是将整个命令粘贴到 PowerShell 中,如下所示:

ntdsutil

激活实例 ntds

权威还原

恢复子树 "OU=Test Container,DC=Contoso,DC=com"

退出

退出

如果我想让脚本为我做这件事,我不想手动复制和粘贴信息。

所以最后我的问题:

有没有办法将信息复制到剪贴板,然后使用命令将其粘贴回powershell?或者将信息输出到文本文件中并从文本文件中复制信息并将其粘贴回powershell?我想强调 PASTE,而不是输入。

谢谢!

4

1 回答 1

0

你必须在你的 DN $object 上添加额外的引号“它在我的实验室中可以正常工作:

[string]$Object = '"' + $Object + '"'
$ntdsutil_job = "ntdsutil" + " " + '"' + "activate instance ntds" + '"' + " " + '"' + "authoritative restore" + '"' + " " + "'" + "restore object" + " " + "`"$Object`"'" + " " + "quit quit"
Invoke-Expression $ntdsutil_job
于 2013-07-31T12:31:23.643 回答