批处理文件,无需信任即可跨域添加打印机

时间:2014-05-08 19:18:14

标签: windows batch-file printing scripting network-printers

我在一个有两个域的环境中工作。实验室域(离线)和生产域(在线)。实验室网络位于DMZ中,并且是生产域的NAT。这两个域之间没有AD信任。

我在实验室域管理的打印机是我想要从生产域访问的。我希望生产域上的用户能够运行批处理文件以将这些打印机添加到生产计算机上(由于各种原因,我无法使用GPO进行部署)。

我知道使用命令行添加打印机的两种方法:

START \\printserver\printer

&安培;

RUNDLL32 PRINTUI.DLL,PrintUIEntry /in /n\\printserver\printer

这两种方法在对实验室域进行身份验证后都有效。我想要做的是传递凭据并在批处理文件的上下文中进行身份验证,而不是Windows提示用户。我想这样做是为了避免用户对跨域身份验证(productionDomain \ user / labDomain \ user)的混淆。 Runas不起作用,因为生产域不知道实验室域凭据。

我想做类似的事情:

@echo off
set loc=\\printserverip\
set p1=printername1
set p2=printername2
set p3=printername3
set p4=printername4
set /P id=Enter LABDOMAIN Login: %=%
powershell -Command $pw = read-host "Enter LABDOMAIN password" -AsSecureString ; $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pw) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt & set /p pwd=<.tmp.txt & del .tmp.txt

REM ---AUTHENTICATE OR RUN THE FOLLOWING IN THE CONTEXT OF THE CREDENTIALS ABOVE---

START %loc%%p1%
START %loc%%p2%
START %loc%%p3%
START %loc%%p4%

REM ---OR---

RUNDLL32 PRINTUI.DLL,PrintUIEntry /in /n%loc%%p1%
RUNDLL32 PRINTUI.DLL,PrintUIEntry /in /n%loc%%p2%
RUNDLL32 PRINTUI.DLL,PrintUIEntry /in /n%loc%%p3%
RUNDLL32 PRINTUI.DLL,PrintUIEntry /in /n%loc%%p4%

1 个答案:

答案 0 :(得分:1)

我认为这会奏效......

NET USE \\printserverip /USER:%id% %pwd%

在本节前面添加:

START %loc%%p1%
START %loc%%p2%
START %loc%%p3%
START %loc%%p4%