Powershell 和 .txt 格式

标签 powershell carriage-return lf

Cisco SX20 系统允许您访问其 Web 界面并下载 .txt 文件中的配置备份。我可以打开文件并手动更改设置,然后重新上传文件,没有任何问题。现在,我有一个 Powershell 脚本,它将更改备份文件中的某些设置,然后将其另存为新的 .txt。当我尝试上传这个新文件时,出现错误:

"Invalid file uploaded."

我已检查以确保我的脚本不会无意中更改文件中的任何其他信息,并且所有信息都是所需的。唯一的区别是,原始备份文件(从 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} 

最佳答案

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

Out-File ... -Encoding ASCII

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

关于Powershell 和 .txt 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531981/

相关文章:

powershell - 来自自定义模块的命令行开关未被识别

Powershell - 获取和组织计算机的 Active Directory 组

javascript - 使用 javascript 或正则表达式根据动态生成的回车符进行拆分

java - Swing 物质外观下载

java - 设置以 Java 结尾的默认行

javascript - 如何删除XML文件中的LF以接收一行xml文件?

sql-server - 使用SQL Server SMO和Split-Path的PowerShell

powershell - 远程范围到本地

javascript - 如何检测第一个字符是否为回车符,并添加回车符

php - 如何在 PHP 中使用正则表达式匹配空格、回车和换行?