2

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

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

我按照这个答案的步骤来启用服务器之间的 Powershell Remoting:远程安全步骤

当我从 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 中运行脚本,以便解决其他问题。

谁能建议我需要做些什么来解决这个安全错误?

4

4 回答 4

3

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

我在这里找到了答案:Powershell Masters

于 2012-08-23T13:40:19.270 回答
0

在猜测了一段时间后,缓存的凭据是我的问题。

打开 Windows 凭据管理器:

rundll32.exe keymgr.dll,KRShowKeyMgr

删除所有缓存的条目。

于 2018-10-12T02:15:36.353 回答
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)
    
于 2021-08-06T23:52:32.020 回答
0

您必须授予该用户 WMI 权限。

https://technet.microsoft.com/en-us/library/cc771551(v=ws.11).aspx

默认情况下,本地/域管理员应该拥有它。

于 2021-10-23T19:23:00.603 回答