我正在使用一个名为MobaXterm的工具向开放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地址。
正如我说的,我的脚本似乎在工作,因为它创建的文件似乎是valid...but,当我试图将这个.mxtsessions文件导入MobaXterm时,它不会加载。没有显示错误。也许有一个日志我可以查看为什么导入失败?
为了进一步对此问题进行分类,我手动将一些机器添加到我的MobaXterm中,并导出该文件。我已经将导出的文件与我用PowerShell脚本创建的文件进行了比较。我看不出这两个文件有什么区别。两个文件上的属性看起来是相同的(当然,名称除外)。每个文件中的数据与我的比较是相同的。
有人能为我提供一些关于为什么我生成的.mxtsessions文件不加载到MobaXterm中的一些提示吗?我查看了MobaXterm.log文件,没有发现与我的导入相关的任何错误?是否还有其他人创建了导入会话文件并成功地将其导入MobaXterm?
本论坛能为我提供的任何建议或建议都将不胜感激。
谢谢。
发布于 2018-07-19 14:52:15
从测试开始,我认为这是一个字符编码问题。如果我将MobaXTerm导入保存为ASCII或UTF8-SAAN-BOM,则不会正常工作。
如果只有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)
https://stackoverflow.com/questions/51425353
复制相似问题