Get-WmiObject凭据在计划时不起作用

时间:2012-11-23 18:53:00

标签: powershell windows-xp

我有一个Powershell脚本来检测网络服务器上需要用户/密码才能访问它的磁盘空间。

我遵循了这个:http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/440ab7ed-7727-4ff7-a34a-6e69e2dff251/

获取此代码:

$password = get-content C:\creds.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "username",$password
Get-WmiObject -ErrorAction Stop Win32_LogicalDisk -ComputerName $deviceName -credential $cred -Filter "DeviceID='$darg'"

$deviceName$darg已经正确定义。

手动运行Powershell脚本时,这很好用。但是,当我将其设置为Windows计划任务时,它认为用户/通行证不正确:

  

Get-WmiObject:访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESS   拒绝))

     

$ disks = Get-WmiObject<<<< -ErrorAction Stop Win32_LogicalDisk -ComputerName $ deviceName -credential $ cred -Filter   “的DeviceID = '$ DARG'”       + CategoryInfo:未指定:(:) [Get-WmiObject],未经授权的AccessException       + FullyQualifiedErrorId:System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

这是为什么? (该帐户是远程服务器上的本地用户。我已尝试在Schedule接口上输入凭据,但它不允许我保存,说无效登录;可能是因为是本地帐户)ServerName\LocalUser在Windows Schedule UI中不起作用,仍然会出现错误的登录错误。

2 个答案:

答案 0 :(得分:1)

为什么不将任务设置为在用户帐户下运行并运行没有凭据的wmi请求?

答案 1 :(得分:1)

这是我的评论,作为答案重新措辞。

convertto / from-securestring函数基于每个用户工作(如果您不提供特定的键值)。 IOW,一个用户无法读取其他用户的数据。

This pre-existing SO question似乎相关。 There is also relevant discussion在Powershellcommunity.org。