none
как получить список профилей на компьютере чрез Power shell RRS feed

  • Вопрос

  • Доброго времени суток. Начинаю изучать PS. И естественно первым скриптом решил сделать очистка временных папок ВСЕХ учетных записей. На текущей все ок получается. Но как мне получить через PS список всех профилей и пропустить их через foreach
    MCP,MCTS
    22 августа 2010 г. 18:41

Ответы

Все ответы

    • Помечено в качестве ответа Aleksey Medvedovskiy 23 августа 2010 г. 12:07
    23 августа 2010 г. 7:19
  • И получится так:

    $a=Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
    $b=$a | ForEach { (Get-ItemProperty -Name "ProfileImagePath" -Path $_.PSPath).ProfileImagePath}
    

    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    • Помечено в качестве ответа Aleksey Medvedovskiy 23 августа 2010 г. 12:07
    23 августа 2010 г. 8:18
    Модератор
  • Чуть красивее :)

    dir 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' | gp | select -expand ProfileImagePath


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    • Предложено в качестве ответа s.h.s. _ 24 августа 2010 г. 11:19
    24 августа 2010 г. 10:06
    Модератор
  • впринципе получилось только что то не могу лог в файл вывести, господа посмотрите код своим зорким взглядом чт не так

     

    cls
    $days = 1
    $Today = Get-Date
    $WeekAgo = $Today.AddDays(-$days)
    $WinDirTemp = $Env:SystemRoot + "\temp\"
    $windir = Get-ChildItem -Path "c:\Windows" -Exclude *.* -Name "purgetemp" 
    $LogName = $Env:SystemRoot + "\purgetemp\purgetemp.log"
    if ( $windir -inotcontains "purgetemp") {
    md -Path $Env:SystemRoot\purgetemp\} else {$null} 
    $DopPathTemp = "\AppData\Local\Temp\"
    $DopPathInternet = "\AppData\Local\Microsoft\Windows\Temporary Internet Files"
    $excl = "*S-1-5-18", "*S-1-5-19", "*S-1-5-20", "*S-1-5-82*"
    $UserProfile = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
    $UPL=$UserProfile | ForEach { (Get-ItemProperty -Name "ProfileImagePath" -Exclude $excl -Path $_.PSPath).ProfileImagePath} 
     
     
    foreach ($Uprofile in $UPL) {
     if ($Uprofile -ne $null) { Get-ChildItem -Path "$Uprofile$DopPathTemp*","$Uprofile$DopPathInternet" -Recurse | ? { $_.LastWriteTime -lt $WeekAgo  } |  Remove-Item -Include $_.name  -Recurse -WhatIf | Out-File -InputObject $_.name -FilePath $LogName} 
     
    }
     
     Remove-Item -Path $WinDirTemp* -Recurse 
    
    	
    
    

    MCP,MCTS
    24 августа 2010 г. 12:55
  • К сведению по очиске мусора http://support.microsoft.com/kb/315246

     


    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    24 августа 2010 г. 13:13
    Модератор
  • впринципе получилось только что то не могу лог в файл вывести

    Есть командлет Out-File
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    24 августа 2010 г. 13:14
    Модератор
  • Обратитет внимание на конец строки out-file стоит только что то не передает 
    foreach ($Uprofile in $UPL) {
     if ($Uprofile -ne $null) { Get-ChildItem -Path "$Uprofile$DopPathTemp*","$Uprofile$DopPathInternet" -Recurse | ? { $_.LastWriteTime -lt $WeekAgo } | Remove-Item -Include $_.name -Recurse -WhatIf | <strong>Out-File -InputObject $_.name -FilePath $LogName</strong>} 
     
    
    

    MCP,MCTS
    24 августа 2010 г. 13:20
  • >...| Remove-Item -Include $_.name -Recurse -WhatIf | Out-File -InputObject $_.name -FilePath $LogName}

    Вы ошибочно полагаете, что на вход Out-file придет то же самое, что и на вход Remove-Item, а это не так. На вход Out-file придет только то, что отдаст Remove-Item, например $null


    blog: http://shss.wordpress.com/
    24 августа 2010 г. 13:54
  • сделайте, например, так:

    ...LastWriteTime -lt $WeekAgo } | %{

     Remove-Item -Include $_.name -Recurse -WhatIf

    Out-File -InputObject $_.name -FilePath $LogName

    }


    blog: http://shss.wordpress.com/
    • Изменено s.h.s. _ 25 августа 2010 г. 5:58
    24 августа 2010 г. 13:58
  • К сожалению такая конструкция не работает


    MCP,MCTS
    25 августа 2010 г. 5:07
  • Измените так, чтобы работала. Я просто тупо скопировал команды из вашего кода.

    1) Наверное, стоит поставить вывод в лог раньше, чем удаление (иначе выводить в лог будет нечего)

    2) добавьте обязательный параметр -path или -LiteralPath при вызове командлета Remove-Item


    blog: http://shss.wordpress.com/
    25 августа 2010 г. 6:17