Powershell和.txt格式

时间:2015-12-30 15:05:54

标签: powershell carriage-return lf

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:\Users\SX20_Backup.txt)|

Foreach-Object {$_-replace 'SX20NAME[a-z , 0-9]*' , $name}|
Foreach-Object {$_-replace 'SetAlias' , $description}|

Out-file $env:USERPROFILE\Desktop\$name.txt} 

1 个答案:

答案 0 :(得分:3)

Out-File默认为UTF-16编码。虽然编码不是很重要,但很多应用程序都无法处理UTF-16,因为他们认为包含空字节的任何内容都是随机二进制数据而不是文本。您可以将-Encoding参数添加到Out-File以指定用于编写文件的编码:

Out-File ... -Encoding ASCII

如果您实际上只有ASCII数据,则此方法有效。如果是Unicode,请改用-Encoding UTF8。对于与其他系统共享的内容,您应该避免使用-Encoding Default-Encoding OEM,它们都是特定于您的系统配置的编码。不要指望它们与其他系统一起工作。