none
Powershell - протоколирование действий, запись в файл RRS feed

  • Вопрос

  • Приветствую всех!

    Нужна помощь, покажите, где я допустил ошибку в скрипте, но где разобраться не могу. Скажу сразу программировать я не умею, недавно начал изучение Powershell. Моих знаний пока недостаточно.

    В моей простой задаче требуется выполнять ежедневную постоянную перекладку файлов из шары в локальный каталог с журналированием действий (в файлах отправляемых туда - запросы, в принимаемых файлах - ответы на эти запросы). Ранее с этим справлялся cmd-файл, он просто перекладывал файлы туда-сюда без логирования. Переписал скрипт на PowerShell, но файл протокола остаётся пустым. Код такой, имена каталогов и маски расширения файлов изменил для примера:

    Set-ExecutionPolicy Bypass
    
    $A1 = 'C:\app\IN'
    $A2 = 'C:\app\OUT'
    $B1 = '\\192.168.0.1\far\input'
    $B2 = '\\192.168.0.1\far\reports'
    $LogTime = Get-Date -Format "yyyyMMdd_hhmmss"
    $LogFile = 'C:\app\log'+"LOG_"+$LogTime+".txt"
    
    Out-File $LogFile -Append -NoClobber
    
    Do {
    	get-childitem -path $A2 -filter *.query | move-item -destination $B1 -force
        get-childitem -path $B2 -filter *.retry* | move-item -destination $A1 -force
    	Start-Sleep -s 5
    	}
    	While ( 1 -lt 10 )

    Запущенный скрипт с интервалом 5 секунд бесконечно проверяет каталоги приложения и шары на наличие файлов запросов и ответов. Если в каталогах есть файлы с расширением отвечающим маске, то он их перекладывает в каталоги назначения. Создаётся файл протокола, но он пустой.

    Пробовал писать лог с помощью Start/Stop-Transcript. В лог пишется только системная информация, информации о событиях с файлами нет.

    Чужие наработки тоже ничего не принесли результата -- протокол создается и опять пустой.

    19 сентября 2016 г. 4:53

Ответы

  • 1) Start-Transcript в начало скрипта

     move-item добавляем параметр -Verbose

    Stop-Tanscript в конец скрипта

    2) Можно и без Start-Transcript, но PowerShell должен быть V3+, то можно

    get-childitem -path $A2 -filter *.query | move-item -destination $B1 -force -Verbose 4>>$LogFile

    • Предложено в качестве ответа Vector BCOModerator 19 сентября 2016 г. 7:15
    • Помечено в качестве ответа Sine_d 20 сентября 2016 г. 6:38
    19 сентября 2016 г. 5:55
    Отвечающий

Все ответы

  • 1) Start-Transcript в начало скрипта

     move-item добавляем параметр -Verbose

    Stop-Tanscript в конец скрипта

    2) Можно и без Start-Transcript, но PowerShell должен быть V3+, то можно

    get-childitem -path $A2 -filter *.query | move-item -destination $B1 -force -Verbose 4>>$LogFile

    • Предложено в качестве ответа Vector BCOModerator 19 сентября 2016 г. 7:15
    • Помечено в качестве ответа Sine_d 20 сентября 2016 г. 6:38
    19 сентября 2016 г. 5:55
    Отвечающий
  • Приветствую всех!

    Нужна помощь, покажите, где я допустил ошибку в скрипте, но где разобраться не могу. Скажу сразу программировать я не умею, недавно начал изучение Powershell. Моих знаний пока недостаточно.

    В моей простой задаче требуется выполнять ежедневную постоянную перекладку файлов из шары в локальный каталог с журналированием действий (в файлах отправляемых туда - запросы, в принимаемых файлах - ответы на эти запросы). Ранее с этим справлялся cmd-файл, он просто перекладывал файлы туда-сюда без логирования. Переписал скрипт на PowerShell, но файл протокола остаётся пустым. Код такой, имена каталогов и маски расширения файлов изменил для примера:

    Set-ExecutionPolicy Bypass
    
    $A1 = 'C:\app\IN'
    $A2 = 'C:\app\OUT'
    $B1 = '\\192.168.0.1\far\input'
    $B2 = '\\192.168.0.1\far\reports'
    $LogTime = Get-Date -Format "yyyyMMdd_hhmmss"
    $LogFile = 'C:\app\log'+"LOG_"+$LogTime+".txt"
    
    Out-File $LogFile -Append -NoClobber
    
    Do {
    	get-childitem -path $A2 -filter *.query | move-item -destination $B1 -force
        get-childitem -path $B2 -filter *.retry* | move-item -destination $A1 -force
    	Start-Sleep -s 5
    	}
    	While ( 1 -lt 10 )

    Запущенный скрипт с интервалом 5 секунд бесконечно проверяет каталоги приложения и шары на наличие файлов запросов и ответов. Если в каталогах есть файлы с расширением отвечающим маске, то он их перекладывает в каталоги назначения. Создаётся файл протокола, но он пустой.

    Пробовал писать лог с помощью Start/Stop-Transcript. В лог пишется только системная информация, информации о событиях с файлами нет.

    Чужие наработки тоже ничего не принесли результата -- протокол создается и опять пустой.

    На out-file должна поступать информация у вас на вход ничего не подается вот файл и пустой

    Set-ExecutionPolicy в скрипте смысла не имеет, так как если скрипт не запустится по сработке execpol то и смена политики так же не отработает


    The opinion expressed by me is not an official position of Microsoft

    19 сентября 2016 г. 7:15
    Модератор