필자 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 주소를 가져 와서 가장 가까운 서버를 선택했습니다. 10.20. *와 같은 IP 주소 인 경우 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 중 가장 적습니다.