Windows 调用powershell脚本后,批处理文件将无法继续
我有个情况。我正在使用调用Powershell脚本的批处理文件在远程桌面上安装网络打印机,但在远程桌面上安装打印机后,Powershell将不返回任何内容-因此我的批处理文件将无法继续…我必须手动按ENTER键两次,使其Windows 调用powershell脚本后,批处理文件将无法继续,windows,batch-file,powershell,Windows,Batch File,Powershell,我有个情况。我正在使用调用Powershell脚本的批处理文件在远程桌面上安装网络打印机,但在远程桌面上安装打印机后,Powershell将不返回任何内容-因此我的批处理文件将无法继续…我必须手动按ENTER键两次,使其echo DONE,然后运行其余脚本。知道为什么吗 @echo off Copy /Y "\\AddPrinter\AddPrinter.ps1" "C:\scripts" powershell.exe -ExecutionPolicy Bypass -Command "C
echo DONE
,然后运行其余脚本。知道为什么吗
@echo off
Copy /Y "\\AddPrinter\AddPrinter.ps1" "C:\scripts"
powershell.exe -ExecutionPolicy Bypass -Command "C:\scripts\AddPrinter.ps1"
Echo DONE
Del /F /Q "C:\ntfs3\scripts\AddPrinter.ps1"
这是我的powershell脚本,我甚至在脚本末尾添加了一个exit
,但远程pc上的powershell不会退出……因此它不会返回批处理
$PrinterPath = "\\server-01\Printer0101"
$net = new-Object -com WScript.Network
$net.AddWindowsPrinterConnection($PrinterPath)
exit
顺便说一句,我使用psexec调用这个批处理文件,其中包含所有pc名称的txt文件
psexec @%1 -u admin -p xxxxxx -c -f "C:\AAA\AddPrinter.bat"
我做了一些研究,有人说需要使用call
和%1>null
使Powershell返回批处理。但它也不起作用
Call powershell.exe -ExecutionPolicy Bypass -Command "C:\scripts\AddPrinter.ps1" %1 > null
我只能使用批处理命令安装打印机,但安装后,新打印机始终设置为默认打印机。但如果使用powershell安装,它不会更改远程桌面上的默认打印机
rundll32 printui.dll PrintUIEntry /ga /n\\server-01\printer0101
请提示。我经常看到通过
psexec.exe
调用PowerShell时出现问题。我建议放弃psexec.exe并改为配置PowerShell远程处理。然后,您可以使用Invoke命令部署脚本。我还建议类似DOS的命令使用Invoke表达式。PowerShell将按原样处理您正在传递的命令。最棒的是,您还可以传递变量也许您的powershell脚本需要时间才能完成执行。能否粘贴powershell文件的内容?我粘贴了powershell脚本,只需15秒即可完成。如果从powershell提示符手动运行powershell脚本,它是否提示输入?否,它只是运行并完成。allIt没有提示在批处理文件中,无论是否有Call
,它都可以为我工作。是否可以将-NoProfile
开关添加到您的powershell.exe行?你是用什么账户做的?我同意你的看法。我不允许打开PSRemoting的东西…上层说太冒险了。。。。。