我有一个使用Get-ChildItem的脚本,如下所示:
$files = Get-ChildItem -Path $directories -Recurse -File -Include "package.json"
从任何powershell提示符运行时完全正常,从任务调度程序运行时除外 .
我的任务调度程序操作是:
powershell -version 3.0 -noprofile -nolog -noninteractive -file somescript.ps1 someargs
从任务调度程序我得到错误: a parameter cannot be found that matches parameter name 'file'
for Get-ChildItem .
What I know:
-
此错误通常是由于在Powershell v3.0之前未添加'File'属性引起的
-
我应该能够使用
-version 3.0
参数强制Powershell在3.0版中运行 . 但是,这似乎与任务调度程序没有任何区别 .
关于我需要改变什么的任何想法?
1 回答
有趣的是,报告的错误具有误导性 . 在这种情况下,错误是因为我指的是映射驱动器,仅当我的用户物理登录到该框时才可用 .
因此,虽然报告的错误是:错误:无法找到参数...'文件',实际问题是我试图将不可用的映射驱动器传递给Get-ChildItem .
我能够通过编写一个非常简单的脚本来确认这一点,该脚本只包含Get-ChildItem并尝试将其作为计划任务运行,无论是否有“即使在用户未登录时运行” .
只检查该框时它才会失败 . 使用网络路径而不是映射驱动器进行测试可以解决问题 .
希望这对未来的其他人有所帮助 .