Powershell Get-WmiObject访问被拒绝

时间:2012-08-15 11:05:42

标签: powershell tfs

我有一个包含以下行的Powershell脚本:

$package = Get-WmiObject -Class Win32_Product -ComputerName $TargetServer -Filter ("Name='{0}'" -f $ApplicationName)

我按照此答案中的步骤操作,以便在服务器之间启用Powershell Remoting:remoting security steps

当我从Powershell ISE(在提升的管理窗口中)运行脚本时,我收到以下错误:

Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
At line:1 char:14
+ Get-WmiObject <<<<  win32_bios -computername d-vasbiz01
+ CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

我需要能够在ISE中运行脚本,以便我可以解决其他问题。

有人可以建议我需要做些什么来修复此安全错误吗?

3 个答案:

答案 0 :(得分:2)

我需要将凭据传递给Get-WmiObject cmdlet。

我在这里找到答案:Powershell Masters

答案 1 :(得分:0)

猜出一个WHILE后,缓存的凭据是我的问题。

打开Windows凭据管理器:

rundll32.exe keymgr.dll,KRShowKeyMgr

删除所有缓存的条目。

答案 2 :(得分:0)

为了扩展 Rob Bowman 的答案,您可以预先收集凭据,也可以在运行命令时收集凭据。

  • 预先(最好,因为您可以将其重新用于未来的 Get-WmiObject 命令:

    $creds = get-credential
    
    $package = Get-WmiObject -Class Win32_Product -ComputerName $TargetServer -Filter ("Name='{0}'" -f $ApplicationName) -credential $creds
    
  • 内联:

    $package = Get-WmiObject -Class Win32_Product -ComputerName $TargetServer -Filter ("Name='{0}'" -f $ApplicationName) -credential (get-credential)