2015-11-24 51 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没有找到任何任务来计划,并没有密切关注)。

所以,可能有某种范围的问题,但我早已过去关心,只是想要这个东西的工作。愿这帮助别人!