none
Получение списка профилей пользователей на удаленном компьютере (PowerShell) RRS feed

  • Вопрос

  • Приветствую.

    Пишу скрипт по сбору лог-файлов из профилей пользователей на терминальном сервере и копированию этих логов на файловую шару. Файлы с логами лежат по адресу: C:\Users\%PROFILENAME%\AppData\Roaming\Soft\log.txt. 

    Планирую реализовать следующим образом:

    1) Сделать выборки и задать переменные:

    • $servername - имя терминального сервера с которого собираем логи (тут проблем нет, выборка с помощью Get-ADComputer из нужной OU)
    • $ProfileName - тут должны быть имена профилей доменных пользователей, подключавшихся к серверу.  Как грамотно это сделать?

    2) С помощью xcopy скопировать логи на файловую шару с именами вида: $servername_$ProfileName_date_log.txt 



     



    • Изменено Stilluss 30 сентября 2019 г. 11:58
    30 сентября 2019 г. 11:17

Ответы

  • Добрый день,

    Я не так краток как Вектор )), но можно и так (и с проверкой по AD):

    $Servername="server"
    $logfile="AppData\Roaming\Soft\log.txt"
    $Profiles=Get-ChildItem \\$Servername\c$\Users\* -Directory  
    foreach ($Profile in $Profiles){
      if ((test-path -Path $Profile\$logfile) -and (Get-ADuser -filter {SamAccountName -eq $Profile.Name})) {
        $fname=$Servername+"_"+$Profile.Name+"_"+(Get-Date -Format "yyyyMMdd")+"_log.txt"
        Copy-Item -Path $Profile\$logfile -Destination c:\temp\$fname
      }
    }
    

    • Помечено в качестве ответа Stilluss 30 сентября 2019 г. 13:14
    30 сентября 2019 г. 13:08

Все ответы

  • ls c:\users -Directories | foreach {
       Copy-Item "$($_.fullname)\your\log\path.log" -Destination "\\server\share\$env:computername_$($_.name)_$(get-date -f u).log"
    }


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


    30 сентября 2019 г. 12:25
    Модератор
  • Copy-Item : Данный формат пути не поддерживается.
    строка:2 знак:4
    +    Copy-Item "$($_.fullname)\AppData\Roaming\SOFT\DRIVERS\test1.log"  ...
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Copy-Item], NotSupportedException
        + FullyQualifiedErrorId : System.NotSupportedException,Microsoft.PowerShell.Commands.CopyItemCommand
    30 сентября 2019 г. 12:53
  • Добрый день,

    Я не так краток как Вектор )), но можно и так (и с проверкой по AD):

    $Servername="server"
    $logfile="AppData\Roaming\Soft\log.txt"
    $Profiles=Get-ChildItem \\$Servername\c$\Users\* -Directory  
    foreach ($Profile in $Profiles){
      if ((test-path -Path $Profile\$logfile) -and (Get-ADuser -filter {SamAccountName -eq $Profile.Name})) {
        $fname=$Servername+"_"+$Profile.Name+"_"+(Get-Date -Format "yyyyMMdd")+"_log.txt"
        Copy-Item -Path $Profile\$logfile -Destination c:\temp\$fname
      }
    }
    

    • Помечено в качестве ответа Stilluss 30 сентября 2019 г. 13:14
    30 сентября 2019 г. 13:08
  • Спасибо! Всё идеально!
    30 сентября 2019 г. 13:14