我有这个脚本连接到一堆服务器并从应用程序和系统日志和磁盘空间获取服务状态,错误。它在Windows XP上作为计划任务运行正常,但在Windows 2008上有一些奇怪的问题。我正在使用一个函数从单独的文件中导入凭据,它们以加密形式存储:
function Import-credential($path) {
$cred = Import-Clixml $path
$cred.password = $cred.Password | ConvertTo-SecureString
New-Object system.Management.Automation.PSCredential(
$cred.username, $cred.password)
}
当我手动运行它并在Windows XP上作为计划任务运行但在Windows 2008上失败并且出现以下错误时,此方法正常工作:
New-Object : Exception calling ".ctor" with "2" argument(s): "Cannot process ar
gument because the value of argument "password" is null. Change the value of ar
gument "password" to a non-null value."
At F:\Tools\MCHS Server Report\monitor.ps1:9 char:15
+ New-Object <<<< system.Management.Automation.PSCredential(
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvoca
tionException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.Power
Shell.Commands.NewObjectCommand
这是第9行:
New-Object system.Management.Automation.PSCredential(
在任务计划程序中,我有程序/脚本和命令&amp;中的powershell.exe的完整路径。添加参数中的“F:\ Tools \ MCHS Server Report \ monitor.ps1”。
有什么想法吗?
编辑:我尝试将其运行的帐户更改为我自己的帐户(我使用的是专门为计划任务创建的本地帐户),并且工作正常。我有0个想法,为什么它不能与其他用户一起工作,因为我们都是管理员并且似乎拥有相同的权限......
答案 0 :(得分:3)
ConvertTo-SecureString / ConvertFrom-SecureString默认情况下使用绑定到最初加密字符串的用户和计算机的加密密钥。如果您以服务帐户身份登录并保存凭据,那么当它作为服务运行时,它应该能够解密它。