none
PowerShell Вывод консоли в текстовый файл RRS feed

  • Общие обсуждения

  • Необходимо вывести результат выполнения команды:

    Get-Process |where {$_.mainWindowTItle} |format-table id,name,mainwindowtitle -AutoSize > 1.txt

    ...в текстовый файл 1.txt НО В КОДИРОВКЕ windows-1251 И БЕЗ ПОТЕРИ КИРИЛЛИЧЕСКИХ СИМВОЛОВ

     Дело в том, что содержимое данного файла передается по аське(бот на делфи), всвою очередь она не понимает Unicode. На самой делфи тоже не смог реализовать адекватную фунуцию перекодировки...

     

    Заранее благодарю.


    9 апреля 2011 г. 9:57

Все ответы

  • Передавайте в виде байтов и восстанавливайте.Пример есть в блоге у Василия Гусева - http://xaegr.wordpress.com/2007/01/24/decoder/

    PS > $bytes = [System.Text.Encoding]::Unicode.GetBytes("Привет")
    PS > [System.Text.Encoding]::Unicode.GetString($bytes)
    Привет
    9 апреля 2011 г. 10:31
    Отвечающий
  • Вот что получилось:

     

    $gp = Get-Process |where {$_.mainWindowTItle} |format-table id,name,mainwindowtitle -AutoSize
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($gp);
    [System.Text.Encoding]::Unicode.GetString($bytes)

    ОТВЕТ:


    Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands
    .Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryDa
    ta Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Comma
    nds.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEnt
    ryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.C
    ommands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.Forma
    tEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShe
    ll.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.G
    roupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData

    9 апреля 2011 г. 10:57
  • Попробовал, все выводится корректно:

    Get-Process | ? {$_.mainWindowTItle} | format-table id,name,mainwindowtitle -AutoSize | out-file -encoding default 111.txt

    9 апреля 2011 г. 11:17
  • Вот что получилось:

     

    $gp = Get-Process |where {$_.mainWindowTItle} |format-table id,name,mainwindowtitle -AutoSize
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($gp);
    [System.Text.Encoding]::Unicode.GetString($bytes)

    ОТВЕТ:


    Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands
    .Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryDa
    ta Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Comma
    nds.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEnt
    ryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.C
    ommands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.Forma
    tEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShe
    ll.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.G
    roupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData


    $gp = Get-Process |where {$_.mainWindowTItle} |format-table id,name,mainwindowtitle -AutoSize | Out-String
    $bytes=[System.Text.Encoding]::Unicode.GetBytes($gp)
    [System.Text.Encoding]::Unicode.GetString($bytes)
    

    9 апреля 2011 г. 11:21
    Отвечающий
  •  | out-file -encoding default 111.txt

    ОТЛИЧНООООООООООО!!!!!!!!!!

    ВСЕ РАБОТАЕТ!!!

    01MDM СПАСИБО ЗА ПОДСКАЗКУ!

    Kazun - за ТЕРПЕНИЕ))

    (http://forum.sysadmins.su/index.php?showtopic=40246752&st=0&gopid=632516&#entry632516)

    9 апреля 2011 г. 11:41