我有一个包含以下行的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中运行脚本,以便我可以解决其他问题。
有人可以建议我需要做些什么来修复此安全错误吗?
答案 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)