我是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"
}
$Compnames
是TextBox
已分配给的变量的名称。
每次输出都是失败的查询,因为新行字符包含在变量中。我尝试在-replace
以及$Comp
上进行$Computers
,但我不确定我是否正确行事。
非常感谢任何帮助。
答案 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", "") }