首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell需要UAC,我需要帮助将此函数转换为PSexec的BAT文件。

Powershell需要UAC,我需要帮助将此函数转换为PSexec的BAT文件。
EN

Stack Overflow用户
提问于 2015-06-01 11:37:03
回答 1查看 191关注 0票数 0
代码语言:javascript
复制
$i=0;
$pnp = pnputil -e;$matched = [regex]::matches($pnp, ".......................................Lexmark International");
$split = $matched -split (".........inf");
$replace = $split -replace " Driver package provider :   Lexmark International","";
$replace1 = $replace -replace " ","`n";
write-output $replace1;
foreach ($i in $replace1){;
$pnpdel = pnputil -f -d $i;$pnpdel;
};
Reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3\Lexmark Universal v2 XL" /f;
net stop spooler;
net start spooler;
$PrinterPath = "\\officechicprt5\111w-2w-bprn-07";
$net = new-Object -Com WScript.Network;
$net.AddWindowsPrinterConnection($PrinterPath)

我知道它不漂亮,但每次我试一次,它都会起作用。如果您好奇的话,在我们的环境中,Lexmark驱动程序经常损坏,这实际上是微软的一个问题。在注册表中,依赖文件被截断,因此打印机将永远不会打印,通常迫使打印机胡乱使用。我们找到解决这个问题的唯一方法是完全删除驱动程序,并读取我们的要点并打印驱动程序。这个脚本可以做到这一点,但不幸的是需要UAC的提升。我尝试使用bat文件与以下内容一起运行:

代码语言:javascript
复制
@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
timeout /t 10

但不幸的是,它给用户留下了一个混乱的表达式和一个UAC提示符。是否可以在bat文件中以某种方式通过PSexec运行此操作?我不想通过RDP将其运行到数百台机器中(在那里,这样做了)。我想要一个可重复的过程,这个问题在这里是一个大流行病。

再次感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 11:47:21

你让事情变得太复杂了。不要用参数启动PowerShell来启动PowerShell。只需直接使用参数启动PowerShell。

代码语言:javascript
复制
powershell.exe -NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1"" -Verb RunAs

如果您需要以提升的权限运行PowerShell脚本,当您的用户不是管理员组的成员时,您应该启用PS远程处理并通过Invoke-Command在远程主机上运行它:

代码语言:javascript
复制
Invoke-Command -Computer 'hostA', 'hostB', ... -ScriptBlock {
  # your PowerShell code here
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30572495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档