Cisco SX20系统允许您访问其Web界面,并在.txt文件中下载其配置的备份。我可以打开文件并手动更改设置,然后重新上传文件,没有任何问题。现在,我有一个Powershell脚本,它将更改备份文件中的某些设置,然后将其保存为新的.txt文件。当我尝试上传这个新文件时,我得到一个错误:
"上传的文件无效。"
我已经检查过,以确保我的脚本不会无意中更改文件中的任何其他信息,并且所有信息都是它需要的。唯一的区别是,原始备份文件(从Cisco Web界面下载)似乎使用了UNIX(LF)格式以提高可读性,而Powershell生成的备份副本使用了Windows(CR/LF)格式。我的脚本是否会导致与Web界面的兼容性问题?
$name = Read-Host 'What is the SX20 name?'
if ($name -notlike "SX20NAME[a-z , 0-9]*")
{
Read-Host 'Please begin naming conventions with "SX20NAME".'
}
else {
$description = Read-Host 'What is the SX20 alias?'
(Get-Content C:UsersSX20_Backup.txt)|
Foreach-Object {$_-replace 'SX20NAME[a-z , 0-9]*' , $name}|
Foreach-Object {$_-replace 'SetAlias' , $description}|
Out-file $env:USERPROFILEDesktop$name.txt}
Out-File
默认为UTF-16编码。虽然编码并不重要,但许多应用程序无法处理UTF-16,因为它们认为任何包含空字节的内容都是随机二进制数据,而不是文本。您可以将-Encoding
参数添加到Out-File
中,以指定将文件写入的编码:
Out-File ... -Encoding ASCII
如果您实际上只有ASCII数据,则此操作有效。如果是Unicode,请改用-Encoding UTF8
。对于与其他系统共享的东西,您应该避免使用-Encoding Default
或-Encoding OEM
,这两种编码都是特定于您的系统配置的。不要期望它们与其他系统一起工作。