Системы Cisco SX20 позволяют получить доступ к их веб-интерфейсу и загрузить резервную копию их конфигурации в TXT-файле. Я могу открыть файл и вручную изменить настройки, а затем повторно загрузить файл без проблем. Теперь у меня есть сценарий Powershell, который изменит некоторые параметры в файле резервной копии, а затем сохранит его как новый .txt. Когда я пытаюсь загрузить этот новый файл, я получаю сообщение об ошибке:Powershell и .txt формат
"Invalid file uploaded."
Я проверил, чтобы убедиться, мой сценарий не неосторожно меняющимся любой другой информации в файл и всю информации является то, что она должна быть , Единственное различие заключается в том, что исходный файл резервной копии (загружаемый с веб-интерфейса Cisco), по-видимому, использует формат UNIX (LF) для удобства чтения, а резервная копия, созданная Powershell, использует формат Windows (CR/LF). Есть ли способ, которым мой сценарий вызывает проблему совместимости с веб-интерфейсом?
$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 $ env: USERPROFILE \ Desktop \ $ name.txt -Encoding UTF8}' позволяет веб-интерфейсу принимать новый файл. Однако я получаю новую ошибку. Интерфейс отклоняет самую первую строку в файле резервной копии. Нужно ли мне добавить аналогичный вариант в начало моего скрипта? – Blake
@Blake Пожалуйста, задайте новый вопрос с новой ошибкой. –
@Blake, это, вероятно, потому, что интерфейс натыкается на U + FEFF, который добавляется как самый первый символ, чтобы сигнализировать, что файл использует UTF-8. Если у вас есть контент Юникода и нужен UTF-8, то, к сожалению, путь «[IO.File] :: WriteAllLines (« $ env: USERPROFILE \ Desktop \ $ name.txt », $ content, (New-Object System.Text .UTF8Encoding $ False)) '. Сначала вам нужно назначить переменную '$ content', конечно, тому, что ваш конвейер написал бы в файл в противном случае. – Joey