我在不允许用户本地管理员权限的环境中工作。完全没有。这非常好,但如果员工必须具有本地管理员权限才能运行程序或安装需要提升权限的软件,即使只是进行安装,也可能会很痛苦。有一个簿记用户,他每月从我们的供应商那里收到一张 DVD,其中包含急需的报告。为了查看报告并进行备份,她必须运行 DVD 上的可执行文件。可执行文件需要管理员权限才能安装。因此,自从我来到这里以来,每个月我都会运行 .exe,UAC 会出现,并且我会提供运行安装程序所需的信息。
如果这是一个一次性程序,我将使用 Microsoft 应用程序兼容性工具包噱头绕过 UAC http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your-trusted-vista -applications/但是,由于这是每个月发给她的新 DVD,我需要某种工具,她可以自己使用此操作。
我环顾了 Server Fault,也做了 Google-Fu,但没有发现任何有用的东西。我可能是处于特殊情况的人之一。
我想用 Poweshell 来制作工具。理想情况下,我希望她能够放入 DVD,然后启动 Poweshell 工具(毫无疑问,从她的桌面快捷方式)查看 DVD 驱动器并以本地管理员身份运行 setup.exe 文件,而无需 UAC 提示,无需她提供任何凭据。
到目前为止,我所拥有的是一些拼凑在一起的垃圾。我不是 Powershell Jedi。我是 Poweshell 学徒。我有我需要的一半。我仍然需要存储密码,因此不必在每次运行脚本时都定义和输入密码。我希望它尽可能流畅并尽可能少点击。
对于我选择使用本地管理员帐户的凭据,因为该密码不会更改。本地管理员帐户将完成工作。我需要将该帐户信息存储在计算机上,以便 Powershell 每次运行脚本时都可以检索该帐户。因此,这将需要是路径变量中的加密文件。
# define path to store password and input password
$path = "C:\Users\User\Password folder"
# get the encrypted local admin password from user path
$encpwd = Get-Content $path\admin.bin
# convert admin file to secure string
$passwd = ConvertTo-SecureString $encpwd
# define local admin credential
$cred = new-object System.Management.Automation.PSCredential 'computer name\local admin',$passwd
# go to DVD drive launch setup.exe as local admin with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe
我可能会为此获得一些反对意见,但我知道在某个地方我需要在现有变量或新变量中定义并放入“”Read-Host“一些关于输入密码的文本”-AsSecureString“”。我必须将密码输入到该过程中。我试过几个地方。想法?智慧?不可能的?
Windows 7 专业版 Powershell v4