none
кодировка для get-content RRS feed

  • Вопрос

  • Задачка вообщем такая:

    Есть скрипт выполняющий резервное копирование с помощью robocopy, потом с помощью строчки

    $Stat = Get-Content $DESTINATION\00\*.log | Select-String "Total Copied" -Context 2,11

    должен выцепить мне все самое важное из лога и отправить на почту. Но вот у файла *.log неправильная кодировка и в итоге get-content открывает вот такое 

    *"???<??':<???? Ї ЇЄ  -1 \\srv-msk2\Backup\daily\00\users\
     *"???<??':<??>% д c< 0 daily_.log
     Ё┐?-Rў - -1 D:\Exe\
     Ё┐?-Rў - -1 D:\_to_Archiv\DfsrPrivate\
     аеЁў 8.4 m 2008.rar
     аеЁў 17.2 m 20120831_132150.mp4
     аеЁў 1.9 m PPTVIEW.EXE
     аеЁў 205417 ўл¤?а│Є  Ё§ Є авRзЄЁ '-21.rtf
     аеЁў 38912 ╪ пўЄ  -  ¤R?RўRа.doc
     аеЁў 18204 ?а вЄ п е а Єв?аЁбвЁЄ  ?.docx
     аеЁў 154628 <? ЄR- бз?в Їа?¤RЇ< в .pdf
     аеЁў 123392 ?вЄалвR? бR?< и?-Ё? R ┐Ё-Ё┐ <м-ле в аЁд е -  ЇаRў?¤?-Ё? Rж?-Rз-ле а ЎRв
    c
     аеЁў 17076 ?аR?Єв Їа ўЁ< §?┐<?ЇR<м§Rў -Ёп Ё § бваRcЄЁ ?RаR¤  ?RбЄўл.docx
     аеЁў 30720 ??ЄўЁ§Ёвл ?ў?аб.doc
     аеЁў 38787 '┐Rа?R-бЄЁc.docx
     аеЁў 37888 бЇЁбRЄ.doc
     аеЁў 349184 бв вмЁ ў Їа?бб?.xls
     аеЁў 279 ?а<лЄ ¤<п Data (D).lnk

    Как это побороть подскажите, через Viewer меняю кодировку на DOS и все работает.


    7 августа 2014 г. 7:04

Ответы

  • Попробовать:

    function ConvertTo-Encoding ([string]$From, [string]$To){
    	Begin{
    		$encFrom = [System.Text.Encoding]::GetEncoding($from)
    		$encTo = [System.Text.Encoding]::GetEncoding($to)
    	}
    	Process{
    		$bytes = $encTo.GetBytes($_)
    		$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
    		$encTo.GetString($bytes)
    	}
    }
    
    
    Get-Content $DESTINATION\00\*.log | ConvertTo-Encoding cp866 windows-1251 | Select-String "Total Copied" -Context 2,11

    7 августа 2014 г. 7:23
    Отвечающий

Все ответы

  • Попробовать:

    function ConvertTo-Encoding ([string]$From, [string]$To){
    	Begin{
    		$encFrom = [System.Text.Encoding]::GetEncoding($from)
    		$encTo = [System.Text.Encoding]::GetEncoding($to)
    	}
    	Process{
    		$bytes = $encTo.GetBytes($_)
    		$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
    		$encTo.GetString($bytes)
    	}
    }
    
    
    Get-Content $DESTINATION\00\*.log | ConvertTo-Encoding cp866 windows-1251 | Select-String "Total Copied" -Context 2,11

    7 августа 2014 г. 7:23
    Отвечающий
  • Как всегда в точку, спасибо :)
    7 августа 2014 г. 7:29