在write-host中覆盖字符串变量位置

时间:2018-05-29 15:42:43

标签: powershell

如果我运行以下代码,$ SRN可以写为输出或添加到另一个变量,但尝试包含另一个变量或常规文本会导致它从行的开头被覆盖。我假设它与我最初分配$ autocode和$ SRN的方式有关,但无法分辨它正在尝试做什么。

# Load the property set to allow us to get to the email body.
$item.load($psPropertySet) # Load the data.
$bod = ($item.Body.Text -creplace '(?m)^\s*\r?\n','') -split "\n" # Get the body text, remove blank lines, split on line breaks to create an array (otherwise it is a single string).
$autocode = $bod[4].split('-')[2] # Get line 4 (should be Title), split on dash, look for 3rd element, this should contain our automation code.
$SRN = $bod[1] -replace 'ID: ','' # Get line 2 (should be ID), find and replace the preceding text.

# Skip processing if autocode does not match our list of handled ones.
if ($autocode -cin $autocodes)
{       
    write-host "$SRN $autocode"
    write-host "$autocode $SRN"
    write-host "$SRN test"
    $var = "$SRN $autocode"
    $var
}

代码导致这一点,你可以看到$ SRN是否不在行的开头就可以了。不确定额外空间来自哪里:

 KRNE8385
KRNE SR1788385
 test8385
 KRNE8385

我希望看到这个:

SR1788385 KRNE
KRNE SR1788385
SR1788385 test
SR1788385 KRNE

1 个答案:

答案 0 :(得分:1)

LotPings向我指出正确的路径,两个变量中仍然有“0D”或“\ r”。我的正则表达式替换只是在空行上删除它们,我只将数组拆分为“\ n”。将原始代码中的第3行更改为以下内容似乎已解决了该问题。第一次看到Format-Hex,但它似乎非常适合解决这些问题。

$bod = ($item.Body.Text -creplace '(?m)^\s*\r?\n','') -split "\r\n"