windows-nt/Source/XPSP1/NT/printscan/print/spooler/scripts/pubprn.vbs
2020-09-26 16:20:57 +08:00

133 lines
3.5 KiB
Plaintext

'----------------------------------------------------------------------
' pubprn.vbs - publish printers from a non Windows 2000 server into Windows 2000 DS
'
'
' Arguments are:-
' server - format server
' DS container - format "LDAP:\\CN=...,DC=...."
'
'
' Copyright (c) Microsoft Corporation 1997
' All Rights Reserved
'----------------------------------------------------------------------
'--- Begin Error Strings ---
Dim L_PubprnUsage1_text
Dim L_PubprnUsage2_text
Dim L_PubprnUsage3_text
Dim L_PubprnUsage4_text
Dim L_PubprnUsage5_text
Dim L_PubprnUsage6_text
Dim L_GetObjectError1_text
Dim L_GetObjectError2_text
Dim L_PublishError1_text
Dim L_PublishError2_text
Dim L_PublishError3_text
Dim L_PublishSuccess1_text
L_PubprnUsage1_text = "Usage: [cscript] pubprn.vbs server ""LDAP://OU=..,DC=..."""
L_PubprnUsage2_text = " server is a Windows server name (e.g.: Server) or UNC printer name (\\Server\Printer)"
L_PubprnUsage3_text = " ""LDAP://CN=...,DC=..."" is the DS path of the target container"
L_PubprnUsage4_text = ""
L_PubprnUsage5_text = "Example 1: pubprn.vbs MyServer ""LDAP://CN=MyContainer,DC=MyDomain,DC=Company,DC=Com"""
L_PubprnUsage6_text = "Example 2: pubprn.vbs \\MyServer\Printer ""LDAP://CN=MyContainer,DC=MyDomain,DC=Company,DC=Com"""
L_GetObjectError1_text = "Error: Path "
L_GetObjectError2_text = " not found."
L_GetObjectError3_text = "Error: Unable to access "
L_PublishError1_text = "Error: Pubprn cannot publish printers from "
L_PublishError2_text = " because it is running Windows 2000, or later."
L_PublishError3_text = "Failed to publish printer "
L_PublishError4_text = "Error: "
L_PublishSuccess1_text = "Published printer: "
'--- End Error Strings ---
set Args = Wscript.Arguments
if args.count < 2 then
wscript.echo L_PubprnUsage1_text
wscript.echo L_PubprnUsage2_text
wscript.echo L_PubprnUsage3_text
wscript.echo L_PubprnUsage4_text
wscript.echo L_PubprnUsage5_text
wscript.echo L_PubprnUsage6_text
wscript.quit(1)
end if
ServerName= args(0)
Container = args(1)
on error resume next
Set PQContainer = GetObject(Container)
if err then
wscript.echo L_GetObjectError1_text & Container & L_GetObjectError2_text
wscript.quit(1)
end if
on error goto 0
if left(ServerName,1) = "\" then
PublishPrinter ServerName, ServerName, Container
else
on error resume next
Set PrintServer = GetObject("WinNT://" & ServerName & ",computer")
if err then
wscript.echo L_GetObjectError3_text & ServerName & ": " & err.Description
wscript.quit(1)
end if
on error goto 0
For Each Printer In PrintServer
if Printer.class = "PrintQueue" then PublishPrinter Printer.PrinterPath, ServerName, Container
Next
end if
sub PublishPrinter(UNC, ServerName, Container)
Set PQ = WScript.CreateObject("OlePrn.DSPrintQueue.1")
PQ.UNCName = UNC
PQ.Container = Container
on error resume next
PQ.Publish(2)
if err then
if err.number = -2147024772 then
wscript.echo L_PublishError1_text & Chr(34) & ServerName & Chr(34) & L_PublishError2_text
wscript.quit(1)
else
wscript.echo L_PublishError3_text & Chr(34) & UNC & Chr(34) & "."
wscript.echo L_PublishError4_text & err.Description
end if
else
wscript.echo L_PublishSuccess1_text & PQ.Path
end if
Set PQ = nothing
end sub