让--%参数按预期工作时遇到了问题。我的$TaskParams变量具有字符'<',它被powershell解释为重定向,因此需要进行转义。
但是,以下操作不起作用:
$CreateTask = Start-Process PowerShell.exe "$ScriptLocation --% $TaskParams" -Wait -PassThru在没有--%的情况下,当我手动删除任何'<'字符时,它可以工作:
$CreateTask = Start-Process PowerShell.exe "$ScriptLocation $TaskParams" -Wait -PassThru收到错误:
Start-Process : A positional parameter cannot be found that accepts argument
'--%'.注意:我使用的是PS 5.0
我是否使用了错误的--%参数?任何帮助或指点,我们将不胜感激。谢谢
发布于 2016-09-07 05:16:04
您不需要启动powershell.exe的新副本,也不需要使用Start-Process从另一个脚本中运行脚本。只需将脚本命令及其参数放在另一个脚本中的一行中。例如,假设您有script2.ps1:
param(
[String] $Name
)
Write-Host "Hello, $Name"现在假设你还有script1.ps1:
Write-Host "This is script1.ps1"
.\Script2.ps1 -Name "Bill Stewart"
Write-Host "script1.ps1 is finished"如果现在运行script1.ps1:
PS C:\> .\Script1.ps1
This is script1.ps1
Hello, Bill Stewart
script1.ps1 is finished发布于 2016-09-07 02:16:58
停止解析符号--%仅在直接调用可执行文件或使用调用操作符&时有效;在调用PowerShell脚本/函数/cmdlet时不使用。
发布于 2016-09-07 02:53:01
如果你真的想使用Start-Process,你可以对参数进行编码,然后运行它。当提升过去的UAC时,我使用类似的东西:
$Code = ". '$ScriptLocation' $TaskParams"
$Encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))
Start-Process PowerShell.exe -ArgumentList "-EncodedCommand",$Encoded -Wait -PassThru我很确定这会达到你想要的效果。
https://stackoverflow.com/questions/39355201
复制相似问题