无法将参数传递给scriptblock

时间:2014-09-22 14:38:07

标签: powershell

我在powershell中将参数传递给脚本块时遇到了很多困难。

    $delScript={del C:\DateResults\* $args[0] $args[1] }
    $result0 = Invoke-Command -ComputerName $targetServer.TrimStart("\\") -Credential $credentials -ScriptBlock $delScript -ArgumentList @("/q" , "/s")

我开始失去剧情试图取悦powershell的语法地狱及其剧本块。我已经研究过这个问题,我甚至无法解决这个基本问题。我希望在这个问题上度过4小时的大部分时间后,有人可以帮助我。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您遇到问题,因为您正在尝试运行旧的dos命令,PowerShell创建了一个别名,以帮助您轻松进入PowerShell。正如评论中提到的delRemove-Item的别名。 Remove-Item只接受一个-Path的位置参数。为了让您的脚本按原样运行,您应该可以将$delScript更改为此

$delScript={cmd.exe /C del C:\DateResults\* $args[0] $args[1] }

哪个会以您期望的方式运行您的代码。当我输入此内容时,您已经找到了更好的方法,即使用原生Remove-Item并从-ArgumentList

中删除Invoke-Command
$delScript={Remove-Item C:\DateResults\* -Recurse -Force}

我还建议您检查Get-Alias以查看其他内容,这样您就不会再次被抓住。

答案 1 :(得分:0)

抱歉,这取决于我自己的无知和愚蠢。徘徊在' del'在PowerGUI应该告诉我我需要知道的一切。

以下是我最终需要的所有内容。

    $delScript={del C:\DateResults\* -Recurse -Force }
$result0 = Invoke-Command -ComputerName $targetServer.TrimStart("\\") -Credential $credentials -ScriptBlock $delScript