在运行批处理/Powershell脚本时,无需输入管理员凭据

在运行批处理/Powershell脚本时,无需输入管理员凭据,powershell,batch-file,uac,administrator,elevated-privileges,Powershell,Batch File,Uac,Administrator,Elevated Privileges,我需要为我的客户开发一个脚本,该脚本将禁用/启用他的笔记本电脑上的WWAN卡 客户端应该能够启用/禁用WWAN卡,而无需提供客户端管理员凭据或帐户 应该是用户友好的。就像双击桌面上的启用或禁用快捷方式来切换开/关 避免任何可能危及安全性的方法,如禁用所有应用程序对提升的凭据提示的需要。(只想绕过此脚本) 我有禁用/启用WiFi适配器的命令。但是,它要求powershell以管理员身份运行,否则访问将被拒绝 Disable-NetAdapter -Name "Wi-Fi" -Confirm:$

我需要为我的客户开发一个脚本,该脚本将禁用/启用他的笔记本电脑上的WWAN卡

  • 客户端应该能够启用/禁用WWAN卡,而无需提供客户端管理员凭据或帐户
  • 应该是用户友好的。就像双击桌面上的启用或禁用快捷方式来切换开/关
  • 避免任何可能危及安全性的方法,如禁用所有应用程序对提升的凭据提示的需要。(只想绕过此脚本)
我有禁用/启用WiFi适配器的命令。但是,它要求powershell以管理员身份运行,否则访问将被拒绝

Disable-NetAdapter -Name "Wi-Fi" -Confirm:$false
我试过下列方法,但没有成功。(访问被拒绝或UAC弹出并提示输入管理员凭据):

  • 创建一个运行带有ExecutionPolicy-Bypass的PS脚本的.Bat文件
  • 在启用“以管理员身份运行”的情况下创建PS脚本的快捷方式
  • 使用.Bat文件的“以管理员身份运行”创建启用/禁用网络适配器的快捷方式
  • PS脚本内的ExecutionPolicy旁路
是否允许我的客户端通过桌面上的脚本打开/关闭WWAN卡,而无需输入管理员凭据

谢谢

这是可以做到的

  • 用户必须以管理员身份运行
想象一下,我们回到了WindowsXP时代。如果用户以标准用户身份运行,则他们无法执行管理员功能。你可以想哭就哭,想抱怨就抱怨,但是标准用户不能仅仅因为需要管理员权限就获得管理员权限

这一点没有改变:您必须是管理员才能进行管理

如果用户是标准用户:您就不能绕过它

  • 那么,如何使用户无需获得管理员即可输入其管理员凭据呢
  • 让他们成为管理员
这很容易做到:

  • 不要让他们成为标准用户
  • 让他们成为管理员
但我们都知道你在抱怨UAC 我们都知道,您正在谈论必须在UAC对话框上单击
OK
。用户最讨厌的是:告诉他们灌肠,做一些深屈膝

或者:你必须关闭UAC,这样他们就会一直以管理员的身份运行

因此,任何恶意软件都可以在机器运行的瞬间完全接管机器。

这是可以做到的

  • 用户必须以管理员身份运行
想象一下,我们回到了WindowsXP时代。如果用户以标准用户身份运行,则他们无法执行管理员功能。你可以想哭就哭,想抱怨就抱怨,但是标准用户不能仅仅因为需要管理员权限就获得管理员权限

这一点没有改变:您必须是管理员才能进行管理

如果用户是标准用户:您就不能绕过它

  • 那么,如何使用户无需获得管理员即可输入其管理员凭据呢
  • 让他们成为管理员
这很容易做到:

  • 不要让他们成为标准用户
  • 让他们成为管理员
但我们都知道你在抱怨UAC 我们都知道,您正在谈论必须在UAC对话框上单击
OK
。用户最讨厌的是:告诉他们灌肠,做一些深屈膝

或者:你必须关闭UAC,这样他们就会一直以管理员的身份运行


因此,使任何恶意软件能够在运行时立即完全接管其机器。

能够绕过脚本中的安全限制将是一个巨大的问题。请通知您的客户,他们的请求不可能。您使用ExecutionPolicy的旁路已经违反了安全规则。你为什么这么做?这样做的唯一原因是公司执行权限设置为受限或远程签名。这意味着他们根本不希望脚本代码运行,或者您需要对脚本进行签名。在管理方面,如果不从整体上完全禁用UAC,这是不明智的。更谨慎的做法是,将此任务设置为使用所需凭据运行的计划任务。有专门用于此目的的工具。以管理员身份安装,设置要启用的适配器及其设置的配置文件,然后作为标准用户,他们可以单击要启用的配置文件。尝试在谷歌上搜索“网络设置管理器”是您想要的吗?“您已经违反了安全规则,在ExecutionPolicy中使用了旁路”-我不同意这一说法,因为PowerShell执行策略是一项安全功能,而不是安全边界(参见PowerShell语言首席设计师Bruce Payette在上的接受答案)。能够绕过脚本中的安全限制将是一个巨大的问题。请通知您的客户端,他们的请求不可能实现。您在ExecutionPolicy中使用bypass已经违反了安全规则。您为什么要这样做?这样做的唯一原因是公司执行权限设置为受限或重新设置moteSigned。这意味着他们根本不希望脚本代码运行,或者您需要对脚本进行签名。管理方面,如果不完全禁用UAC,就无法完成此操作,这是不明智的。更谨慎的做法是,将此设置为计划任务,并使用所需的凭据运行。有专门用于此目的的工具e、 作为管理员安装,设置要启用的适配器及其设置的配置文件,然后作为标准用户安装
powershell.exe -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file "c:\Users\%username%\Desktop\DisableWifi.ps1"
netsh interface set interface Wi-Fi disable
Start-Process powershell.exe -ArgumentList "/noexit", "-executionpolicy bypass","-file C:\Users\$env:UserName\Desktop\DisableWiFi.ps1"