以PowerShell脚本中的管理员身份运行命令。 UAC
好的这里是我的问题:以PowerShell脚本中的管理员身份运行命令。 UAC
我想在服务器上远程运行脚本。
我是这两个盒子上的管理员,防火墙例外已启用,远程管理已启用,以及其他一切看起来不错,我可以看到。
invoke-command -ComputerName $ComputerName -ScriptBlock `
{
cd C:\Windows\System32\inetsrv\;
./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files>
}
我不断收到以下错误回报
ERROR (hresult:80070005, message:Failed to commit configuration changes. Access is denied.
它正试图在其上运行服务器2K8 R2框中选择一个服务器和我想的问题是一个UAC的问题。无论如何要让它以管理员身份运行,而不必在UAC框中单击“是”?
这段代码最终将成为必须完全自动化的脚本。
任何帮助将不胜感激。
好的。经过一些研究和测试后,我发现了这个问题。禁用UAC和防火墙并且脚本仍然无法工作后,我深入地挖了一下,发现主要问题是invoke-command运行命令的方式。它使用运行脚本的人的凭据向服务器进行身份验证,然后尝试使用另一个帐户来运行权限或降低用户的权限,以便某些命令无法运行。
我将-Credentials开关添加到invoke命令中,现在一切正常。下面更正代码示例:在HKLM \ SOFTWARE \微软\窗户发现
$user = New-Object Management.Automation.PSCredential("$UserName", $securePassword)
invoke-command -ComputerName $ComputerName -Credential $user -ScriptBlock `
{
cd C:\Windows\System32\inetsrv\;
./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files>
}
因此,当编写需要管理员权限的东西时,没有比在脚本中以明文形式输入用户名和密码更好的方法吗?真?以管理员身份运行该服务是不够的... 编写需要管理员权限的Windows服务安装的最佳做法是什么? – 2013-12-20 09:26:39
另一种方法是让用户通过Get-Credential cmdlet输入凭据。 – riezebosch 2015-03-13 09:27:42
是否有无论如何得到这个以管理员身份运行,而不必点击UAC盒上的是?
如果这是可能的话,它将完全击败UAC的观点。
因此,看起来您唯一真正的解决方案就是禁用UAC。
不幸的是,禁用UAC不是一种选择,因为它将在高可视性服务器上运行。 希望有人可以找出解决方案或解决方法。也许我只是在做错事。 – Tim 2010-02-11 22:12:30
另一种方法是将这些脚本运行的任何启动都提升 - 然后它可以产生其他升级的进程而不需要另一个UAC确认。 – 2010-02-11 22:14:16
我唯一的问题是它会远程执行。 此脚本将从管理服务器在多个服务器上运行不同的命令。因此,服务器A(mgmt)在服务器1,2和3上远程运行命令。如果服务器A上的进程正在运行,它将在服务器1,2和3上运行提升? – Tim 2010-02-11 22:21:02
设置选项 “EnableLUA”(DWORD值)\ CurrentVersion \政策\系统为0并重新启动。
这将禁用UAC没有问题,我会为你的所有用户做到这一点,无论是否有权限取决于你,因为Vista的UAC是如此的可怕,以至于我相信少有人拥有它更好(至少在Vista中)他们是。这个技巧也适用于Win7。
有乐趣我的注册表招:)
PS:事实证明也是如此审查意见,说明如何尽可能禁用UAC与上面的回答我的职务/线程而言(勤奋的答案是去除)。
我不认为他们会用你的意思来审查你。我最好的猜测是你推荐的东西可能会给偶然用户带来安全风险。 UAC是否由于某种原因,这是否成功实现是超出了这个问题的范围;) – Kounavi 2012-05-23 17:40:11
@Kounavi好的,你是对的,它超出了这个问题的范围,这就是为什么我回答了这个问题,并包括我的其他评论作为一个附带评论。如果以这样一种可怕的方式完成某些事情,就应该向开发者传授一种教训,并且更重要的是,因为这样做带来的灾难远远超过了它提供的安全性,所以应该提出抗议和禁止,这是Vista的主要原因之一是一场巨大的灾难。 – 2012-05-25 09:23:45
好吧,这不是UAC。我禁用了UAC,防火墙以及其他所有我认为会干扰的事情。我也做了由tyranid建议的注册表更改。既不可行。这很古怪。它表示操作成功,然后提供相同的访问权限被拒绝错误。 – Tim 2010-02-12 00:40:23
你可以在远程PowerShell实例上运行'whoami/all'并查看你实际拥有的权限吗? – tyranid 2010-02-12 06:08:10
我运行了这个命令,它列出了我的域帐户名,我在域中的成员组以及特权列表。所有权限均为管理员级别并且已启用,列出的其中一个组位于Administrators组中,并且所有权限都是正确的。 – Tim 2010-02-12 15:22:22