我有一个批处理文件,我从那里运行一个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使用-Command,使用命名参数(如-MachineName
)并且没有命名参数但每次都会出现此错误:
处理-File'\ _ 10.193.40.56 \ c $ \ systems \ cph_wsconfigtool \ src \ scripts \ MachineName'失败,因为该文件没有'.ps1'扩展名。指定有效的Windows PowerShell脚本文件名,然后重试。
但是,如果删除参数,它的效果非常好。那么我做错了什么?我已经阅读了我在互联网上可以找到的关于它的所有帖子,并且他们都说这是实现它的方式。
答案 0 :(得分:1)
-Command "%~dp0\Rename.ps1"
而不是
-Command "%~dp0%\Rename.ps1"
(从原始问题的评论中提取答案。)