Benutzer und Ordner via Powershell löschen und neu erstellen

nex86

Captain
Registriert
Okt. 2011
Beiträge
3.715
Mir geht es darum das löschen eines Benutzers und dessen Benutzerordner restlos zu löschen und diesen im nachhinein neuzuerstellen.
Habe dazu folgenden PS script zusammengeschnibbelt:

PowerShell:
function Remove-LocalUserCompletely {

    Param(
        [Parameter(ValueFromPipelineByPropertyName)]
        $Name
    )

    process {
        $user = Get-LocalUser -Name $Name -ErrorAction Stop

        # Remove the user from the account database
        Remove-LocalUser -SID $user.SID

        # Remove the profile of the user (both, profile directory and profile in the registry)
        Get-CimInstance -Class Win32_UserProfile | ? SID -eq $user.SID | Remove-CimInstance
    }
}

# Example usage:
Remove-LocalUserCompletely -Name 'Schule'
Remove-LocalUserCompletely -Name 'schule'
Remove-item "C:\Users\Schule" -recurse -force

New-LocalUser -Name "Schule" -NoPassword -PasswordNeverExpires -AccountNeverExpires


Das löschen scheint schonmal zu funktionieren.
Beim neuerstellen bekomm ich allerdings folgenden Fehler:


Code:
ew-LocalUser : Der Parametersatz kann mit den angegebenen benannten Parametern nicht aufgelöst werden.
In Zeile:1 Zeichen:1
+ New-LocalUser -Name "Schule" -NoPassword -PasswordNeverExpires -Acco ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-LocalUser], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.NewLocalUserCommand

Ich wüsste jetzt nicht was das problem sein soll?

Habe mir hier die parameter angesehen: https://docs.microsoft.com/en-us/po...calaccounts/new-localuser?view=powershell-5.1

aber scheint alles richtig zu sein?
 
-NoPassword und -PasswordNeverExpires funktionieren nicht zusammen. Wieso sollte man ein nicht vorhandenes Passwort nicht auslaufen lassen?

E: in der Hilfe sieht man es auch, erstes Beispiel ohne PW, zweites mit PW und optionalem PasswordNeverExpires:
Code:
PS C:\WINDOWS\system32> get-help New-LocalUser

NAME
    New-LocalUser

SYNOPSIS
    Creates a local user account.


SYNTAX
    New-LocalUser [-Name] <String> [-AccountExpires <DateTime>] [-AccountNeverExpires] [-Confirm] [-Description
    <String>] [-Disabled] [-FullName <String>] -NoPassword [-UserMayNotChangePassword] [-WhatIf] [<CommonParameters>]

    New-LocalUser [-Name] <String> [-AccountExpires <DateTime>] [-AccountNeverExpires] [-Confirm] [-Description
    <String>] [-Disabled] [-FullName <String>] -Password <SecureString> [-PasswordNeverExpires]
    [-UserMayNotChangePassword] [-WhatIf] [<CommonParameters>]
 
ach stimmt macht sinn.. danke..
Ergänzung ()

Funktioniert allerdings immer noch nicht.
Der Benutzer erscheint zwar in der Benutzerverwaltung, ist allerdings im Login Bildschirm nicht auswählbar obwohl er aktiv ist.
 
Zuletzt bearbeitet:
Tipp: Schau dir mal die Gruppenzugehörigkeiten an...
 
ok habe das meiste so erstmal gelöst....
allerdings fordert er beim einloggen jetzt eine Passwortänderung..
wollte das ganze mit "Set-ADUser -Identity "Schule" -ChangePasswordAtLogon $false" lösen.
Funktioniert aber nicht..

PowerShell:
$ErrorActionPreference = "Continue"

function Remove-LocalUserCompletely {

    Param(
        [Parameter(ValueFromPipelineByPropertyName)]
        $Name
    )

    process {
        $user = Get-LocalUser -Name $Name -ErrorAction Continue

        # Remove the user from the account database
        Remove-LocalUser -SID $user.SID

        # Remove the profile of the user (both, profile directory and profile in the registry)
        Get-CimInstance -Class Win32_UserProfile | ? SID -eq $user.SID | Remove-CimInstance
    }
}

# Example usage:
Remove-LocalUserCompletely -Name 'Schule'
Remove-LocalUserCompletely -Name 'schule'
Remove-item "C:\Users\Schule" -recurse -force
Remove-item "C:\Users\schule" -recurse -force

New-LocalUser -Name "Schule" -NoPassword -AccountNeverExpires
Enable-LocalUser -Name "Schule"
Set-ADUser -Identity "Schule" -ChangePasswordAtLogon $false
Add-LocalGroupMember -Group "Benutzer" -Member "Schule"
pause
logoff
 
Set-ADUser? du hast doch einen lokalen User erstellt...
 
Ja aber gegoogelt und der Parameter gehört zu diesem Befehl.
welche Alternative hätte ich die in meinem falle funktionieren würde?

Set-LocalUser hat den Parameter nicht.

Code:
PS C:\Windows\system32> Set-LocalUser -Name "Schule" -ChangePasswordAtLogon $false
Set-LocalUser : Es wurde kein Parameter gefunden, der dem Parameternamen "ChangePasswordAtLogon" entspricht.
In Zeile:1 Zeichen:30

ok anstatt -NoPassword hab ich -PasswordNeverExpires, damit gehts.

jetzt brauch ich nurnoch einen weg den blöden erstassistenten beim einloggen zu unterdrücken.
 
Zuletzt bearbeitet:
puuh das ganze muss ich per script machen aber blicke bei Set-GPLink und den ganzen GUIDS nicht durch..
 
einfach per Powershell den passenden Reg-Eintrag setzen/ändern...

e: wobei das ja sowieso für den Computer gilt und nicht pro Benutzer. Also nur einmal ändern und fertig.
 
ja was denn nun? Lokal oder doch Domain? 🤔

Sei so gut und schilder mal das tatsächliche Problem. Was hast du, und was willst du?

GANZ wichtig: einmal gelöschte user sind weg und kommen auch nicht wieder.

set-gplink hat mit Usern gar nichts zu tun.
 
Zurück
Oben