这是一个简单的问题,但它把我难住了。
$cred = Get-Credential
$jobs = @()
$jobs += Get-WmiObject `
-Authentication 6 `
-ComputerName 'serverName' `
-Query 'Select * From IISWebServerSetting' `
-Namespace 'root/microsoftiisv2' `
-EnableAllPrivileges `
-Credential $cred `
-Impersonation 4 `
-AsJob
$joblist = Wait-Job -Job $jobs -Timeout 60
foreach ($job in $jobs)
{
if ($job.State -eq "Completed")
{
$app = Receive-Job -Job $job
$app
} else {
("Job not completed: " + $job.Name + "@" + $job.State + ". Reason:" + $job.ChildJobs[0].JobStateInfo.Reason)
Remove-Job -Job $job -Force
}
}直接运行查询成功,运行-AsJob查询失败。
Reason:System.UnauthorizedAccessException: Access is denied. 我使用过-Impersonation、-Credentials、-Authority和-EnableAllPrivileges,但都没有什么有用的效果。看起来我忽略了一些基本的东西。为什么我的Powershell提示符被允许连接到远程服务器,但我的子进程被拒绝?
发布于 2010-04-22 00:57:58
是否为PowerShell V2 remoting配置了远程计算机和正在运行此操作的计算机?如果您查看get-wmiobject的帮助,它会显示以下内容:
注意:若要将此参数用于远程计算机,必须将本地计算机和远程计算机配置为远程处理。此外,您必须在Windows V ista和更高版本的Windows中使用“以管理员身份运行”选项来启动Windows PowerShell。有关更多信息,请参见about_Remote_Requirements。
发布于 2011-03-24 16:57:08
您看到的“拒绝访问”实际上来自DCOM。-AsJob和WMI使用一种更好、更有效的WMI远程处理形式,称为异步远程处理。因此,您必须进行一些额外的防火墙配置更改。特别是,我认为您需要在Windows防火墙用户界面中使用“允许远程管理”。
这篇关于MSDN的文档更详细地介绍了该设置:
Connecting to WMI Thru Windows Firewall
希望这能有所帮助
https://stackoverflow.com/questions/2678163
复制相似问题