协助将MXTSESSIONS文件导入MobaXterm

时间:2018-07-19 14:32:58

标签: powershell

我正在使用一个名为MobaXterm的工具来打开与Linux虚拟机的SSH会话。我试图通过脚本创建主机名的导入文件,以便可以动态创建要连接的VM列表,而无需在MobaXterm Gui中手动添加它们。为此,我创建了以下PowerShell脚本,该脚本从.csv文件读取主机名和IP地址。该脚本正在工作,因为正在创建一个.mxtsessions文件,并且该文件似乎是我从MobaXterm的会话文件导出测试中导出的文件。这是我的工作脚本:

$csvFilename = 'C:\mobaxterm\mobaXterm.csv'
$outfile = 'C:\mobaxterm\MobaXterm_Sessions.mxtsessions'
$csv = Import-Csv -Path $csvFilename -Delimiter ','

@'
[Bookmarks]
SubRep=
ImgNum=42
'@ | Out-File -FilePath $outfile

$output = foreach ($line in $csv) {
    "$($line.hostname)= #109#0%$($line.ip)%22%[loginuser]%%-1%-1%%%22%%0%0%0%%%-1%0%0%0%%1080%%0%0%1#MobaFont%10%0%0%0%15%236,236,236%0,0,0%180,180,192%0%-1%0%%xterm%-1%0%0,0,0%54,54,54%255,96,96%255,128,128%96,255,96%128,255,128%255,255,54%255,255,128%96,96,255%128,128,255%255,54,255%255,128,255%54,255,255%128,255,255%236,236,236%255,255,255%80%24%0%1%-1%<none>%%0#0#"
}

$output | Out-File -FilePath $outfile -Append

导入文件只是两列的.csv文件,其中第一列具有主机名,第二列具有每个主机名的IP地址。

正如我所说,我的脚本似乎正在运行,因为它正在创建一个看起来有效的文件...但是,当我尝试将此.mxtsessions文件导入MobaXterm时,它将不会加载。没有显示错误。也许我可以查看日志,了解导入失败的原因?

为了进一步诊断该问题,我然后手动将一些计算机手动添加到MobaXterm并导出了文件。我已将导出的文件与使用PowerShell脚本创建的文件进行了比较。我没有看到两个文件之间的任何区别。这两个文件上的属性看起来相同(当然名称除外)。根据我的比较,每个文件中的数据都是相同的。

谁能为我提供一些关于为什么我生成的.mxtsessions文件无法加载到MobaXterm中的指示?我已经查看了MobaXterm.log文件,没有看到与导入有关的任何错误?还有其他人创建了导入会话文件并将其成功导入MobaXterm吗?

这个论坛可以为我提供的任何建议或建议,将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

仅通过测试,我认为这是一个字符编码问题。如果我另存为ASCII或UTF8-sans-BOM,则MobaXTerm导入有效,否则将无效。

如果只有ASCII字符,请在编写时尝试添加编码参数:

'@ | Out-File -FilePath $outfile -Encoding ASCII


$output | Out-File -FilePath $outfile -Append -Encoding ASCII

如果您需要Unicode,那么没有PowerShell 5.1或更早版本的BOM便无法编写它,因此您需要:

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($outfile, $allyourtextcontent, $Utf8NoBomEncoding)