私はかなり一生懸命ググって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の少なくとも。