我正在创建一个基于菜单的输出的Active Directory Restore脚本。该脚本执行的其中一项功能是使用ntdsutil.exe
将Active Directory对象设置为Authoritative我遇到的问题是,如果您手动输入命令,则会执行以下操作:
如果我想使用脚本完成所有这些操作,那么在脚本中文本应如下所示:
$ ntdsutil_job =“ntdsutil”+“”+'“'+”激活实例ntds“+'”'+“”+'“'+”“权威性恢复”+'“'+”“+” '“+”恢复“+ $ Restore_Type +”“+'”'+ $ Object +'“'+”'“+”“+”退出退出“
变量如下所示:
ntdsutil“激活实例ntds”“权威性恢复”“恢复子树”OU =用户,DC = Contoso,DC = com“'退出退出
然后在脚本中我说:
调用-Expression $ ntdsutil_job
一切正常,直到OU中有空格,例如:
OU =测试容器,DC = Contoso,DC = com
如果我输入 'OU =测试容器,DC = Contoso,DC = com' < ntdsutil ,则不接受/强>
经过长时间的测试后,我发现唯一的方法是将整个命令粘贴到PowerShell中,如下所示:
的 NTDSUTIL 的
激活实例ntds
权威性恢复
恢复子树“OU =测试容器,DC = Contoso,DC = com”
的退出 的
的退出 的
如果我希望脚本能为我做这件事,我不想手工复制和粘贴信息。
最后我的问题是:
有没有办法将信息复制到剪贴板中,然后使用命令将其粘贴回PowerShell?或者将信息输出到文本文件中并从文本文件中复制信息并将其粘贴回PowerShell?我想重点关注PASTE,而不是输入。
谢谢!
答案 0 :(得分:0)
您必须在DN $对象上添加其他引号“ 它在我的实验室中正常工作:
[string]$Object = '"' + $Object + '"'
$ntdsutil_job = "ntdsutil" + " " + '"' + "activate instance ntds" + '"' + " " + '"' + "authoritative restore" + '"' + " " + "'" + "restore object" + " " + "`"$Object`"'" + " " + "quit quit"
Invoke-Expression $ntdsutil_job