我正在尝试以下链接中的命令,但没有成功: run-script-within-batch-file-with-parameters 通过批处理文件以管理员身份执行脚本的命令:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File "D:\z_Batchs e Scripts\Batchs\Normaliza_LUFS\ArqsNorms_LUFS_pass.ps1' '%_vLUF%' -Verb RunAs}"
%_vLUF%
是需要传递的参数。错误信息:
No line:1 character:4
+ & {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolic ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
在PowerShell脚本中接收参数的命令:
Param(
[decimal]$env:_vLUF
)
可能出现问题的是批处理文件中的命令还是PowerShell脚本中的命令?
测试:
当以非管理员身份通过批处理文件执行脚本时,而参数在PowerShell脚本中被定义为:
PowerShell中的参数:
Param(
[decimal]$env:_vLUF
)
批处理文件中的命令可在非管理员身份下运行脚本:
powershell.exe -executionpolicy remotesigned -File "D:\z_Batchs e Scripts\Batchs\Normaliza_LUFS\ArqsNorms_LUFS_pass.ps1" %_vLUF%
注意:
target参数名不需要使用命名参数。
结果:
![enter image description here](https://istack.dev59.com/Dmx03.webp)
当脚本通过批处理文件运行时,即使脚本中使用的参数被定义为环境参数,例如:
[decimal]$env:_vLUF
,并且参数值为负数,例如:-11.0
,它也能正常工作,而无需作为管理员运行。为什么Powershell在没有作为管理员运行脚本时正确解释参数中的减号,而在作为管理员运行时却不能正确解释减号,这是一个问题,我留给专家们去解决!
不过,我的问题已经得到了@mklement0先生的很好回答。
"D:\z_Batchs e Scripts\Batchs\Normaliza_LUFS\ArqsNorms_LUFS_pass.ps1"'
- Clamarc