2015-11-24 210 views
0

我正在編寫一個在Windows Server 2012 R2上註冊和未註冊計劃任務的PowerShell腳本。我在這一行尤其是具有麻煩:什麼導致此PowerShell腳本錯誤?

Unregister-ScheduledTask -TaskPath "\Sensei\" 

(老師是這個項目的代號,並且是包含所有我關心的任務文件夾的名稱。)

當我從ISE或命令行運行該命令,它工作正常。然而,當我從.ps1文件運行它,它給了我一個徹頭徹尾的令人困惑的錯誤:

Unregister-ScheduledTask : Cannot retrieve the dynamic parameters for the cmdlet. Cannot bind argument to parameter 'TypeName' because it is null. 
At Z:\server_scripts\clean.ps1:12 char:5 
+  Unregister-ScheduledTask -TaskPath "\Sensei\" 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Unregister-ScheduledTask], ParameterBindingException 
    + FullyQualifiedErrorId : GetDynamicParametersException,Unregister-ScheduledTask 

儘可能靠近我可以告訴大家,TypeName不是一個參數Unregister-ScheduledTask接受,所以它必須從某處內部現身到該cmdlet。

有沒有人有任何想法是什麼造成這個?

編輯:有人問了整個腳本。我省略了它,因爲沒有其他的說明。

cd Z:\server_scripts 
. .\variables.ps1 

#Delete config files 
    del $SENSEIPATH\assets.cfg 
    del $SENSEIPATH\Web\Web.config 

#Remove the virtual application 
    Remove-WebApplication -Site $IISSITE -Name "c" 

#Clean out the scheduled tasks 
    Unregister-ScheduledTask -TaskPath "\Sensei\" 

.\variables.ps1只是包含了一些變量定義,如$SENSEIPATH$IISSITE。我不能在這裏發佈,但我保證沒有什麼幻想。

+0

你能告訴我們腳本文件的全部內容嗎? – Sean

+0

當然,但我懷疑有什麼有用的 –

+0

你如何運行ps1文件。只需從PowerShell調用它? – Matt

回答

-1

所以,我不明白問題究竟是什麼,但是這是發生了什麼事情。

我實際上有一個單獨的腳本,未列在上面,用於下載有問題的腳本,然後執行它。這是bootstrap.ps1。它看起來像這樣:

Read-S3Object -BucketName $BUCKET -Folder z:\server_scripts -KeyPrefix "server_scripts/app" 

Z:\server_scripts\clean.ps1 

當這從ISE內部運行時,它會產生上面的錯誤消息。

但是,如果我跑clean.ps1直接,或跑bootstrap.ps1外ISE的,或者我修改bootstrap.ps1這樣的,它工作正常:

Read-S3Object -BucketName $BUCKET -Folder z:\server_scripts -KeyPrefix "server_scripts/app" 

. Z:\server_scripts\clean.ps1 

(我錯過了其中的一些是成功的,因爲它會拋出一個不同的錯誤,如果Unregister-ScheduledTask沒有找到任何任務來計劃,並沒有密切關注)。

所以,可能有某種範圍的問題,但我早已過去關心,只是想要這個東西的工作。願這幫助別人!