2013-05-17 109 views
2

我有這個腳本連接到一堆服務器,並從應用程序和系統日誌以及磁盤空間獲取服務狀態,錯誤。它運行罰款,在Windows XP計劃任務,但有我使用的功能導入從一個單獨的文件,他們都以加密形式存儲的憑據在Windows 2008的一些奇怪的問題:Powershell腳本作爲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(

我n任務計劃程序我在程序/腳本中具有PowerShell.exe的完整路徑,並在添加參數中包含命令&「F:\ Tools \ MCHS Server Report \ monitor.ps1」。

任何想法?

編輯:我試着改變它運行到我自己的帳戶(我正在使用專門爲計劃任務創建的本地帳戶),它的工作正常。我有0個想法,爲什麼它不會與其他用戶一起工作,因爲我們都是管理員,似乎有相同的權限...

+0

運行任務的用戶是否可以訪問密碼文件?您是否將任務配置爲以最高權限運行? –

+0

是的,他已經訪問該文件。我已經將任務配置爲以最高權限運行,但沒有任何變化:(感謝您抽出時間發表評論! – linnah

+0

我仍然懷疑UAC相關問題。您是否可以暫時禁用UAC(需要重新啓動服務器)?你在使用哪個PowerShell版本? –

回答

3

默認情況下ConvertTo-SecureString/ConvertFrom-SecureString使用加密密鑰綁定到用戶和計算機上,該字符串最初是加密的。如果您以服務帳戶身份登錄並保存憑證,則它應能夠在作爲服務運行時對其解密。

+0

謝謝!這聽起來像是根本原因。我注意到之前導出憑據返回基於系統的不同結果,但不知道它也是用戶相關的。我試圖upvote,但我顯然缺乏聲譽....認爲自己upvoted :) – linnah

相關問題