【问题标题】:What is causing this PowerShell script error?是什么导致了这个 PowerShell 脚本错误?
【发布时间】:2016-02-27 05:53:49
【问题描述】:

我正在编写一个 PowerShell 脚本,用于在 Windows Server 2012 R2 上注册和取消注册计划任务。我对这条线特别有问题:

Unregister-ScheduledTask -TaskPath "\Sensei\"

(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。我不能在这里发布它,但我保证没有什么花哨的。

【问题讨论】:

  • 你能告诉我们脚本文件的全部内容吗?
  • 当然,但我怀疑有什么有用的
  • 你是如何运行 ps1 文件的。只是从 PowerShell 调用它?
  • 听起来像是Unregister-ScheduledTask 中的DynamicParam 块中的错误。也许它将斜杠解释为转义序列。你试过-TaskPath "\Sensei"
  • @JohandeHaan “添加”是什么意思?该 cmdlet 由 Microsoft 创建

标签: windows powershell scheduled-tasks powershell-3.0


【解决方案1】:

所以,我不明白到底是什么问题,但这是发生了什么。

我实际上有一个单独的脚本,上面没有列出,它下载有问题的脚本,然后执行它。这是bootstrap.ps1。它看起来像这样:

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

Z:\server_scripts\clean.ps1

当它从 ISE 内部运行时,它会产生上面的错误消息。

但是,如果我直接运行 clean.ps1,或者在 ISE 之外运行 bootstrap.ps1,或者我像这样修改 bootstrap.ps1,它工作正常:

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

. Z:\server_scripts\clean.ps1

(我错过了其中一些成功的原因,因为如果Unregister-ScheduledTask 没有找到任何要取消计划的任务并且没有密切关注,它会引发不同的错误)。

因此,可能存在某种范围界定问题,但我早已不在乎,只想让这件事发挥作用。愿这对其他人有所帮助!

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 2012-10-06
    • 1970-01-01
    • 2012-09-21
    • 2010-10-12
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多