【问题标题】:Batch file to add printers across domains without trust在不信任的情况下跨域添加打印机的批处理文件
【发布时间】:2014-05-08 19:18:13
【问题描述】:

我在具有两个域的环境中工作。一个实验室域(离线)和一个生产域(在线)。实验室网络位于 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%

【问题讨论】:

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


    【解决方案1】:

    我认为这会起作用...

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

    在此部分之前添加它:

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

    【讨论】:

    • 我最终启用了匿名打印来解决我的问题,但这个解决方案有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多