0

我有一个 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 DENIED))

$disks = Get-WmiObject <<<< -ErrorAction Stop Win32_LogicalDisk -ComputerName $deviceName -credential $cred -Filter "DeviceID='$darg'" + CategoryInfo : NotSpecified: (:) [Get-WmiObject], Unauthorized AccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

为什么是这样?(该帐户是远程服务器上的本地用户。我尝试在 Schedule 界面上输入凭据,但它不允许我保存它,说登录无效;可能是由于是本地帐户)ServerName\LocalUser在Windows Schedule UI,仍然给出不正确的登录错误。

4

2 回答 2

1

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

于 2012-11-23T19:28:59.947 回答
1

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

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

这个预先存在的 SO 问题似乎是相关的。Powershellcommunity.org上也有相关讨论

于 2012-11-27T19:36:06.103 回答