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