繁体   English   中英

将带空格的字符串传递到参数-Powershell

[英]Passing a string with spaces into a parameter - powershell

将带有空格的参数传递到Powershell脚本时遇到问题。 似乎仅在空格之前使用参数字符串的第一部分

[CmdletBinding()]
Param(

 [Parameter(Mandatory=$True, ParameterSetName='firewallCommand',Position=0,HelpMessage="Input Firewall Index")]
 [string]$fwName,

 [Parameter(Mandatory=$True, ParameterSetName='firewallCommand',Position=1,  HelpMessage="Input Firewall Command")]
 [string]$fwCommand)

在脚本内,这会将参数传递给以下命令:

 cprid_util -server $firewallIpAdd -verbose rexec -rcmd  "$fwCommand"

在命令行上,如果运行此命令,它将起作用:

.\fwcommand_run.ps1 -fwName firewall-name -fwCommand "ps"

如果我运行它根本不起作用:

 .\fwcommand_run.ps1 -fwName firewall-name -fwCommand "ps -ef"

但是,如果我直接调用该命令,它将起作用:

cprid_util -server 10.1.128.4  -verbose rexec -rcmd  ps -ef

$fwCommand被注册为单个值。 Powershell Community Extensions中的Echoargs在以下情况下非常有用:

$fwCommand = "ps -ef"
$firewallIpAdd = "127.0.0.1"

$command = "cprid_util -server $firewallIpAdd -verbose rexec -rcmd '$fwCommand'"
[management.automation.psparser]::Tokenize($command,[ref]$null) | Format-Table Content, Type -AutoSize

Content                Type
-------                ----
cprid_util          Command
-server    CommandParameter
127.0.0.1   CommandArgument
-verbose   CommandParameter
rexec       CommandArgument
-rcmd      CommandParameter
ps -ef               String

.\EchoArgs.exe -server $firewallIpAdd -verbose rexec -rcmd $fwCommand

Arg 0 is <-server>
Arg 1 is <127.0.0.1>
Arg 2 is <-verbose>
Arg 3 is <rexec>
Arg 4 is <-rcmd>
Arg 5 is <ps -ef>

您可以在空白处拆分值或使用Invoke-Expression

$firewallIpAdd = "127.0.0.1"
$fwCommand = "ps -ef"
Invoke-Expression ".\EchoArgs.exe -server $firewallIpAdd -verbose rexec -rcmd $fwCommand"

Arg 0 is <-server>
Arg 1 is <127.0.0.1>
Arg 2 is <-verbose>
Arg 3 is <rexec>
Arg 4 is <-rcmd>
Arg 5 is <ps>
Arg 6 is <-ef>

我设法通过拆分$ fwCommand字符串来使其工作

 $commandSplit = $fwCommand -split ' '
 cprid_util -server $firewallIpAdd -verbose rexec -rcmd  $commandSplit[0] $commandSplit[1]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM