将参数从批处理传递给PowerShell

时间:2018-06-18 08:13:12

标签: powershell batch-file

我有一个批处理文件,我从那里运行一个PowerShell脚本。我想将参数传递给这个PowerShell脚本。我尝试了很多不同的东西:

Set MachineName=Computer2
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -Command "%~dp0%\Rename.ps1" -MachineName %MachineName%

并使用-File代替-Command

Set MachineName=Computer2
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File"%~dp0%\Rename.ps1" -MachineName %MachineName%

且没有指定参数-MachineName

Set MachineName=Computer2
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File"%~dp0%\Rename.ps1" %MachineName%

我的Powershell脚本(Rename.ps1)以:

开头
Param($MachineName)

我尝试使用双引号,单引号,无引号,使用-File使用-Co​​mmand,使用命名参数(如-MachineName)并且没有命名参数但每次都会出现此错误:

  

处理-File'\ _ 10.193.40.56 \ c $ \ systems \ cph_wsconfigtool \ src \ scripts \ MachineName'失败,因为该文件没有'.ps1'扩展名。指定有效的Windows PowerShell脚本文件名,然后重试。

但是,如果删除参数,它的效果非常好。那么我做错了什么?我已经阅读了我在互联网上可以找到的关于它的所有帖子,并且他们都说这是实现它的方式。

1 个答案:

答案 0 :(得分:1)

-Command "%~dp0\Rename.ps1"

而不是

-Command "%~dp0%\Rename.ps1"

(从原始问题的评论中提取答案。)

相关问题