Создайте пакетный файл, который удаляет все пользовательские папки данных за исключением Всех Пользователей и Пользователя По умолчанию?

Это был немногим более, чем месяц, с тех пор как я заменяю наш физический DC виртуальным. Использование является обычно ОЧЕНЬ низким, и оно не имело единственной проблемы. На несвязанном вызове в поддержку виртуализации MS я задал некоторым вопрос, и у них не было предупреждений или протестов бросить в меня.

0
задан 4 November 2013 в 04:37
2 ответа

Я записал это для другого пользователя с другой проблемой, но она сделает то, что Вы хотите (и является намного более чистым, чем Ваше предложение просто удаления папки Users).

Это - VBScript, так же просто сохраните как .vbs файл и двойной щелчок. Это попросит Полностью определенное Доменное имя ПК, который Вы хотите осмотреть. Это затем перечислит каждый Профиль пользователя на той машине и даст Вам выбор удаления профиля (и таким образом папка Users).

Если Вы получаете проблемы полномочий, изменяете UserName = "" и Пароль = "" строки в учетную запись, которая имеет Локальные права администратора по целевому ПК.

Option Explicit
On Error Resume Next

Dim strComputer
Dim objWMIService
Dim propValue
Dim objItem
Dim SWBemlocator
Dim UserName
Dim Password
Dim colItems
Dim strMessage
Dim deleteResponse

strComputer = ""
UserName = ""
Password = ""
strMessage = ""

strComputer = InputBox("Please enter the FQDN of the new computer:")

If strComputer = "" Then
    WScript.quit
End If

If Not Ping (strComputer) Then
    MsgBox "The computer (" + strComputer + ") is not responding to ping - exiting"
    WScript.quit
End if

Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_UserProfile",,48)
For Each objItem in colItems
    strMessage = ""
    If not objItem.LastDownloadTime = "" Then 
        strMessage = strMessage + "LastDownloadTime: " & left(objItem.LastDownloadTime,8) + Chr(10) + Chr(13)
    End If

    If Not objItem.LastUploadTime = "" Then
        strMessage = strMessage + "LastUploadTime: " & left(objItem.LastUploadTime,8) + Chr(10) + Chr(13)
    End if

    if not objItem.LastUseTime = "" then
        strMessage = strMessage + "LastUseTime: " & left(objItem.LastUseTime,8) + Chr(10) + Chr(13)
    End If

    If Not objItem.Loaded  = "" Then
        strMessage = strMessage + "Loaded: " & objItem.Loaded + Chr(10) + Chr(13)
    End If

    If not objItem.LocalPath = "" then
        strMessage = strMessage + "LocalPath: " & objItem.LocalPath + Chr(10) + Chr(13)
    End If

    if not objItem.RefCount = "" then
        strMessage = strMessage + "RefCount: " & objItem.RefCount + Chr(10) + Chr(13)
    End If

    if not objItem.RoamingConfigured = "" then
        strMessage = strMessage + "RoamingConfigured: " & objItem.RoamingConfigured + Chr(10) + Chr(13)
    End If

    if not objItem.RoamingPath = "" then
        strMessage = strMessage + "RoamingPath: " & objItem.RoamingPath + Chr(10) + Chr(13)
    End If

    if not objItem.RoamingPreference = "" then
        strMessage = strMessage + "RoamingPreference: " & objItem.RoamingPreference + Chr(10) + Chr(13)
    End If

    if not objItem.SID = "" then
        strMessage = strMessage + "SID: " & objItem.SID + Chr(10) + Chr(13)
    End If

    if not objItem.Special = "" then
        strMessage = strMessage + "Special: " & objItem.Special + Chr(10) + Chr(13)
    End If

    if not objItem.Status = "" then
        strMessage = strMessage + "Status: " & objItem.Status + Chr(10) + Chr(13)
    End If

    strMessage = strMessage + Chr(10) + Chr(13) + Chr(10) + Chr(13) + "Do you wish to delete this profile?"

    deleteResponse = MsgBox (strMessage,35,"Profile Found")

    Select Case deleteResponse
        Case 6
                Err.Clear
                objItem.Delete_
                If Err.Number = 0 Then 
                        MsgBox("Profile " & objitem.localpath & " on " & strComputer & " deleted")
                Else
                        MsgBox("Profile " & objitem.localpath & " on " & strComputer & " NOT deleted - Is user logged in?")             
                End If
    End Select

Next

Function Ping(strHost)

    dim objPing, objRetStatus

    set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
      ("select * from Win32_PingStatus where address = '" & strHost & "'")

    for each objRetStatus in objPing
        if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
                Ping = False
        else
            Ping = True
        end if
    Next
End Function
1
ответ дан 4 December 2019 в 11:24
  • 1
    Я can' t заставляют это перечислять. Это просто говорит что найденный профиль. Я говорю этому удалять, затем это закрывается. –   20 August 2009 в 00:04
  • 2
    Это просто говорит что Найденный Профиль, и doesn' t перечисляют какие-либо детали, как Локальный Путь? –  Izzy 20 August 2009 в 00:09
  • 3
    PS. Это won' t производят один большой список профилей. It' цикл ll через них. Найденный Профиль 1, Удалите? Найденный Профиль 2, Удалите? и т.д. –  Izzy 20 August 2009 в 00:13

В первую очередь, Вы не хотите удалять папки на уровне ОС, вместо этого необходимо использовать delprof для выполнения этого. Во-вторых, Вы не можете удалить профиль в настоящее время зарегистрированного пользователя, так запланируйте выполнить его как компьютерный сценарий запуска или выполнить его удаленно против машины, которую Вы знаете, включается, но не имеет пользователя, в настоящее время входил в систему.

Таким образом, необходимо взглянуть на эту статью KB, которая предоставит Вам всю информацию, Вам нужно. Определенная команда, которую Вы хотите, будет чем-то как:

delprof /q /i /c:computername
5
ответ дан 4 December 2019 в 11:24
  • 1
    Я думаю, что можно удалить все профили как этот с дополнительным определением 0 или 1 как неактивные дни для профиля./d:days: Этот параметр указывает количество дней, после которого Delprof.exe рассматривает профили как неактивные. Удалены профили, которые не использовались сроком на время, которое дольше, чем заданное значение. –  KAPes 1 October 2009 в 06:21

Теги

Похожие вопросы