Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 在Powershell上打印变量_Variables_Powershell_Printing_Write Host - Fatal编程技术网

Variables 在Powershell上打印变量

Variables 在Powershell上打印变量,variables,powershell,printing,write-host,Variables,Powershell,Printing,Write Host,我需要在Powershell上打印一行Com,并通过一个变量调用$em_result,例如,em_result=20,谢谢 $em_result = ´gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} | Measure -Sum | Select -Exp Sum'´ Write-Host"$em_result" 分配它时,需要指定它是字

我需要在Powershell上打印一行Com,并通过一个变量调用$em_result,例如,em_result=20,谢谢

$em_result = ´gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum'´
Write-Host"$em_result"

分配它时,需要指定它是字符串,否则Powershell将尝试执行它。您还需要使用双引号对其进行分隔,并使用反勾号对命令中的双引号和美元符号进行转义,以便它们被视为字符串的一部分,而不是结束字符串的分隔符

$em_result = [string]"gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{`$_ -match 'cajica11'} | %{(`$_ -split `"\s+`")[3]} |  Measure -Sum | Select -Exp Sum'"

分配它时,需要指定它是字符串,否则Powershell将尝试执行它。您还需要使用双引号对其进行分隔,并使用反勾号对命令中的双引号和美元符号进行转义,以便它们被视为字符串的一部分,而不是结束字符串的分隔符

$em_result = [string]"gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{`$_ -match 'cajica11'} | %{(`$_ -split `"\s+`")[3]} |  Measure -Sum | Select -Exp Sum'"

分配它时,需要指定它是字符串,否则Powershell将尝试执行它。您还需要使用双引号对其进行分隔,并使用反勾号对命令中的双引号和美元符号进行转义,以便它们被视为字符串的一部分,而不是结束字符串的分隔符

$em_result = [string]"gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{`$_ -match 'cajica11'} | %{(`$_ -split `"\s+`")[3]} |  Measure -Sum | Select -Exp Sum'"

分配它时,需要指定它是字符串,否则Powershell将尝试执行它。您还需要使用双引号对其进行分隔,并使用反勾号对命令中的双引号和美元符号进行转义,以便它们被视为字符串的一部分,而不是结束字符串的分隔符

$em_result = [string]"gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{`$_ -match 'cajica11'} | %{(`$_ -split `"\s+`")[3]} |  Measure -Sum | Select -Exp Sum'"

虽然我不确定您试图完成的目标的动机,但听起来您似乎在试图保存命令
$em_result
,以便可以在需要时运行。这样,您就不会保存时间点结果,而是每次调用它时,结果都将从该时间开始

就像您需要将命令另存为字符串一样。然而,要逃避的不仅仅是引用。管道变量
$\uuz
也将发挥作用。就目前情况而言,一个简单的解决方案可以让你不必担心逃避任何事情

$em_result = @'
gc 'C:\Users\mtmachadost\Desktop\Test\logError.txt' | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum
'@
现在可以调用这个字符串并得到结果

Write-Host "`$em_result = $(Invoke-Expression $em_result)"

我猜你是想使用backtick对和escape引号对,这让我觉得这就是你想要的。Backtick将仅转义后面的一个字符<代码>调用表达式将执行作为代码传递的字符串

虽然我不确定您试图完成任务的动机,但听起来您似乎在试图保存命令
$em\u result
,以便在需要时运行。这样,您就不会保存时间点结果,而是每次调用它时,结果都将从该时间开始

就像您需要将命令另存为字符串一样。然而,要逃避的不仅仅是引用。管道变量
$\uuz
也将发挥作用。就目前情况而言,一个简单的解决方案可以让你不必担心逃避任何事情

$em_result = @'
gc 'C:\Users\mtmachadost\Desktop\Test\logError.txt' | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum
'@
现在可以调用这个字符串并得到结果

Write-Host "`$em_result = $(Invoke-Expression $em_result)"

我猜你是想使用backtick对和escape引号对,这让我觉得这就是你想要的。Backtick将仅转义后面的一个字符<代码>调用表达式将执行作为代码传递的字符串

虽然我不确定您试图完成任务的动机,但听起来您似乎在试图保存命令
$em\u result
,以便在需要时运行。这样,您就不会保存时间点结果,而是每次调用它时,结果都将从该时间开始

就像您需要将命令另存为字符串一样。然而,要逃避的不仅仅是引用。管道变量
$\uuz
也将发挥作用。就目前情况而言,一个简单的解决方案可以让你不必担心逃避任何事情

$em_result = @'
gc 'C:\Users\mtmachadost\Desktop\Test\logError.txt' | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum
'@
现在可以调用这个字符串并得到结果

Write-Host "`$em_result = $(Invoke-Expression $em_result)"

我猜你是想使用backtick对和escape引号对,这让我觉得这就是你想要的。Backtick将仅转义后面的一个字符<代码>调用表达式将执行作为代码传递的字符串

虽然我不确定您试图完成任务的动机,但听起来您似乎在试图保存命令
$em\u result
,以便在需要时运行。这样,您就不会保存时间点结果,而是每次调用它时,结果都将从该时间开始

就像您需要将命令另存为字符串一样。然而,要逃避的不仅仅是引用。管道变量
$\uuz
也将发挥作用。就目前情况而言,一个简单的解决方案可以让你不必担心逃避任何事情

$em_result = @'
gc 'C:\Users\mtmachadost\Desktop\Test\logError.txt' | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum
'@
现在可以调用这个字符串并得到结果

Write-Host "`$em_result = $(Invoke-Expression $em_result)"

我猜你是想使用backtick对和escape引号对,这让我觉得这就是你想要的。Backtick将仅转义后面的一个字符<代码>调用表达式将执行作为代码传递的字符串

如果要将命令行保存到变量,我建议将其保存为
ScriptBlock
,而不是
String

$em_result = {gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum'}
Write-Host "`$em_result = $(&$em_result)"
这样你就:

  • 不必逃避事情
  • 可以将其转换为字符串
  • 可以通过调用运算符(
    &
    )调用它
  • 在ISE中编辑时,请突出显示语法
  • 任何语法错误都是在解析时捕获的,而不是在执行时捕获的
  • ScriptBlock
    链接到其文件和行,因此您可以在其中设置断点

  • 如果要将命令行保存到变量,我建议将其保存为
    ScriptBlock
    ,而不是
    String

    $em_result = {gc C:\Users\mtmachadost\Desktop\Test\logError.txt | ?{$_ -match 'cajica11'} | %{($_ -split "\s+")[3]} |  Measure -Sum | Select -Exp Sum'}
    Write-Host "`$em_result = $(&$em_result)"
    
    这样你就:

  • 不必逃避事情
  • 可以将其转换为字符串
  • 可以通过调用运算符(
    &
    )调用它
  • 有语法