运行命令在PowerShell脚本管理员。 UAC
-
20-09-2019 - |
题
确定这里是我的问题:
我想在服务器上远程运行的脚本。
我在两个箱子管理员,防火墙例外到位,远程管理已启用,并且一切看起来不错,我可以看到。
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和防火墙和脚本仍然没有工作我挖得更深一些,发现的主要问题是方式调用命令运行命令后。它使用运行脚本来验证服务器的人的凭据,然后尝试使用另一个帐户来运行权限或降低了用户的权限,使某些命令不能运行。
我添加-Credentials切换到invoke命令现在一切工作很大。下面校正代码示例:
$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>
}
其他提示
设置在HKLM \ SOFTWARE发现\微软\ Windows中的选项 “EnableLUA”(DWORD值)\ CurrentVersion \政策\系统为0,并重新启动。
这将禁用UAC不会有问题,我会做它为所有的用户,无论有或没有权限是你的,因为Vista的UAC是如此可怕,我不相信有它越少越好人(至少在Vista)它们。 Thsi招也适用在Win7了。
有乐趣我的注册表绝招:)
P.S:事实证明也是如此审查意见,说明如何尽可能与上面的回答我的职务/线程而言禁用UAC(一个勤奋的答案被删除)。
反正是有得到这个以管理员身份运行,而无需点击是一个UAC对话框?
如果这是可能的,将完全打败UAC的点。
因此,将出现在唯一的真正的解决方案是在包装盒上禁用UAC。
不隶属于 StackOverflow