Powershell中的变量包括换行符

时间:2016-12-01 19:02:03

标签: xaml powershell

我是PowerShell的新手,但我创建了一个XAML表单来对我们的环境进行一些健康检查。在第一部分中,我创建了一个if语句来检查设备的连接状态。设备名称从TextBox中提取,然后,如果该设备已连接,则继续进行运行状况检查。但是,当项目从TextBox拉出时,它包括"`n"对于该行,查询失败。这是相关的代码......

    Remove-Item C:\Healthlog.txt
#This is where the problem is happening
$Computers = $CompNames.Text.Split("`n")

Foreach ($Comp in $Computers){

    $log= "C:\Healthlog.txt"
    Add-Content $log "$Comp"

    #Check to see if machines are connected
    Write-Host "$TestConnection = Test-Connection -ComputerName $Comp -    Quiet"
    $TestConnection = Test-Connection -ComputerName $Comp -Quiet
    Write-Host $TestConnection
    If ($TestConnection -eq $False) {
    Add-Content $log "Connection to Device has failed"
    }

$CompnamesTextBox已分配给的变量的名称。

每次输出都是失败的查询,因为新行字符包含在变量中。我尝试在-replace以及$Comp上进行$Computers,但我不确定我是否正确行事。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

你确定它只是一个混乱的换行值吗?您是否尝试过更换车辆退货?

$Computers = $CompNames.Text.Split("`n")
Foreach ($Comp in $Computers)
{

    $newComp = $Comp.Replace("`n", "").Replace("`r", "")

    $log= "C:\Healthlog.txt"
    Add-Content $log "$newComp"

    #Check to see if machines are connected
    Write-Host "$TestConnection = Test-Connection -ComputerName $newComp -    Quiet"
    $TestConnection = Test-Connection -ComputerName $newComp -Quiet
    Write-Host $TestConnection
    If ($TestConnection -eq $False) {
    Add-Content $log "Connection to Device has failed"
}

答案 1 :(得分:0)

请注意此命令的输出:

("1`n2`n").Split("`r`n").Count

输出为3,因为第三行为空。您可以忽略空条目(我认为这是您想要的)来解决这个问题:

$CompNames.Text.Split("`r`n", [StringSplitOptions]::RemoveEmptyEntries)

答案 2 :(得分:0)

所以基于这里的评论,我得到了代码功能。空条目和回车都是一个问题。最终的代码最终看起来像这样。

$Computers = $CompNames.text.split("`n", [StringSplitOptions]::RemoveEmptyEntries) | % { $_.replace("`r", "") }