确定这里是我的问题:

我想在服务器上远程运行的脚本。

我在两个箱子管理员,防火墙例外到位,远程管理已启用,并且一切看起来不错,我可以看到。

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> 
} 

其他提示

似乎表明你需要确保你是在远程计算机上的本地管理员(但无可否认这是专门WMI)。根据您可以更改注册表键停止UAC申请为管理员远程登录(搜索LocalAccountTokenFilterPolicy)。这不应该禁用UAC只是没有筛选令牌如果您远程使用PowerShell / WMI使用管理员帐户。

设置在HKLM \ SOFTWARE发现\微软\ Windows中的选项 “EnableLUA”(DWORD值)\ CurrentVersion \政策\系统为0,并重新启动。

这将禁用UAC不会有问题,我会做它为所有的用户,无论有或没有权限是你的,因为Vista的UAC是如此可怕,我不相信有它越少越好人(至少在Vista)它们。 Thsi招也适用在Win7了。

有乐趣我的注册表绝招:)

P.S:事实证明也是如此审查意见,说明如何尽可能与上面的回答我的职务/线程而言禁用UAC(一个勤奋的答案被删除)。

  

反正是有得到这个以管理员身份运行,而无需点击是一个UAC对话框?

如果这是可能的,将完全打败UAC的点。

因此,将出现在唯一的真正的解决方案是在包装盒上禁用UAC。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top