我非常努力地搜索谷歌,甚至backup-GPO
满怀希望,希望能够破解生成的XML文件并重新导入它,但是我怀疑PowerShell脚本在您的将来。
没那么糟糕。您可以从最近的服务器生成打印机列表,然后循环浏览并映射它们。
像这样:
$net = New-Object -COMObject WScript.Network
$printserver = 'yourserver'
$printerlist = Get-WMIObject -class Win32_Printer -computer $printserver | Where-Object {$_.ShareName -ne $null} | Select-Object ShareName
foreach ($printer in $printerlist)
{
$printerpath = '\\' + $printserver + '\' + $printer.ShareName
#echo $printerpath
$net.AddWindowsPrinterConnection($printerpath)
}
如果打印机被命名为逻辑事物,并且有某种逻辑方法可以识别机器,那么您也许可以对其进行进一步完善。例如,我以前通常基于拉出客户端IP地址来选择最近的服务器。如果IP地址为10.20。*,请转到server1。等等。
希望对您有所帮助。
编辑:
查看@EvanAnderson的文档,我很确定XML是可入侵的。
我的导出文件的相关位(带有修订):
<DSObject bkp:Path="CN={GUIDHERE},CN=PushedPrinterConnections,%GPO_MACH_DSPATH%" bkp:SourceExpandedPath="CN={13B9B596-452C-4652-A05D-78EF06610134},CN=PushedPrinterConnections,CN=Machine,CN={44A99FBA-0DB3-484C-808E-3DDAE9932A2B},CN=Policies,CN=System,DC=Domainname,DC=extension" bkp:ObjectClass="msPrint-ConnectionPolicy">
<DSAttributeMultiString bkp:DSAttrName="showInAdvancedViewOnly">
<DSValue><![CDATA[TRUE]]></DSValue>
</DSAttributeMultiString>
<DSAttributeMultiString bkp:DSAttrName="uNCName">
<DSValue><![CDATA[\\Servername\PrinterShareName]]></DSValue>
</DSAttributeMultiString>
<DSAttributeMultiString bkp:DSAttrName="serverName">
<DSValue><![CDATA[\\Servername]]></DSValue></DSAttributeMultiString>
<DSAttributeMultiString bkp:DSAttrName="printAttributes">
<DSValue><![CDATA[0]]></DSValue>
</DSAttributeMultiString>
<DSAttributeMultiString bkp:DSAttrName="printerName">
<DSValue><![CDATA[PrinterShareName]]></DSValue>
</DSAttributeMultiString>
</DSObject>
$GPM = New-Object -ComObject GPMgmt.Gpm
。我认为该接口虽然是绝对可以使用的工具,但它可能会为您提供比其他简单地破解看起来像真正的GPO的XML更受支持的方法。没有人喜欢COM。我们所有的Powershellers最少。