Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Powershell script: nooit ingelogde users verwijderen

Pagina: 1
Acties:

  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
Hoi,

Voor schoolopdracht is het de bedoeling om gebruikers die nog nooit zijn ingelogd te verwijderen middels een powershell script. Het deel dat ik ADUsers controleer of ze nog nooit zijn ingelogd is gelukt. Ook is het mij gelukt om een lijst met SAMAccountNames van deze gebruikers te listen.

Nu is mijn vraag, hoe kan ik met deze info de users verwijderen? Ik dacht zelf aan met een for-loop door mijn resultaat heen en vervolgens verwijderen, maar hoe?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function SelectAccounts {
    Get-ADUser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | select SamAccountName,Name
}

function ChoiceMenu {

    if ($input -eq 'y') {
    DeleteAccount
    }
    elseif ($input -eq 'n') {
    Write-Host "Het script word afgebroken"
    return
    }
    else {
    Write-Host "Foutieve invoer, probeer opnieuw"
    DeleteAccount
    }

}

function DeleteAccount {

}

Write-Host "De volgende accounts zullen verwijderd worden"
SelectAccounts
$input = Read-Host 'Doorgaan met uitvoeren van het script? (Y/N)'
ChoiceMenu


Afbeeldingslocatie: https://i.gyazo.com/c284e4780d063b92e37f5ce83d130e32.png

De SAMAccountName heb ik dus al, maar hoe kan ik deze in een variabele stoppen zodat ik bijvoorbeeld het commando

Remove-ADUser $name

kan uitvoeren.

Bvd,

  • chaoscontrol
  • Registratie: Juli 2005
  • Laatst online: 09:13
Je zou je output van het 1e script in een variable kunnen stoppen en vervolgens met

code:
1
2
3
4
foreach($value in $variable)
{
Remove-ADuser $value
}

Inventaris - Koop mijn meuk!


  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
chaoscontrol schreef op vrijdag 12 januari 2018 @ 15:18:
Je zou je output van het 1e script in een variable kunnen stoppen en vervolgens met

code:
1
2
3
4
foreach($value in $variable)
{
Remove-ADuser $value
}
Ja dit bedoelde ik met de for-loop oplossing.
Maar hoe stop ik de output van dat commando in een variabele :P

  • eric.1
  • Registratie: Juli 2014
  • Laatst online: 28-11 22:26
henkkeumus schreef op vrijdag 12 januari 2018 @ 15:25:
[...]


Ja dit bedoelde ik met de for-loop oplossing.
Maar hoe stop ik de output van dat commando in een variabele :P
PowerShell:
1
$var = powershellcommand

  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
eric.1 schreef op vrijdag 12 januari 2018 @ 15:27:
[...]

PowerShell:
1
$var = powershellcommand
Werkt niet :|

  • chaoscontrol
  • Registratie: Juli 2005
  • Laatst online: 09:13
Wat werkt niet? Welke error krijg je? We willen wel helpen maar wel beetje effort doen dan hè. ;)

Inventaris - Koop mijn meuk!


  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
Krijg geen errors, hij doorloopt het gewoon.
Heb het even in het klein gestest

code:
1
2
3
4
5
$user = Get-ADUser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | select SamAccountName

foreach ($user in $users) {
    Remove-ADUser $user
    }


En dit werkt ook niet.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Inderdaad: als je meer dan 'welles' verwacht als reactie, dan ook meer dan 'nietes' als reactie geven. Zeker ook bij een schoolopdracht waar de lat voor meedenken nog wat hoger hoort te liggen ;)

offtopic:
Topictitel aangevuld: alleen Powershell script' zegt erg weinig, daar zijn er meer van.


Edit:
henkkeumus schreef op vrijdag 12 januari 2018 @ 15:35:
Ik ben ondertussen ook gewoon aan het proberen hoor :9.
Ik reageerde wat traag :P

[ Voor 25% gewijzigd door F_J_K op 12-01-2018 15:36 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • eric.1
  • Registratie: Juli 2014
  • Laatst online: 28-11 22:26
henkkeumus schreef op vrijdag 12 januari 2018 @ 15:34:
Krijg geen errors, hij doorloopt het gewoon.
Heb het even in het klein gestest

code:
1
2
3
4
5
$userS = Get-ADUser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | select SamAccountName

foreach ($user in $users) {
    Remove-ADUser $user
    }


En dit werkt ook niet.
echo anders eerst $users voordat je iets gaat loopen (en kijk naar mijn aanpassing)

  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
F_J_K schreef op vrijdag 12 januari 2018 @ 15:34:
Inderdaad: als je meer dan 'welles' verwacht als reactie, dan ook meer dan 'nietes' als reactie geven. Zeker ook bij een schoolopdracht waar de lat voor meedenken nog wat hoger hoort te liggen ;)

offtopic:
Topictitel aangevuld: alleen Powershell script' zegt erg weinig, daar zijn er meer van.
Ik ben ondertussen ook gewoon aan het proberen hoor :9.

  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
eric.1 schreef op vrijdag 12 januari 2018 @ 15:35:
[...]

echo anders eerst $users voordat je iets gaat loopen (en kijk naar mijn aanpassing)
Aha, verkeerde var te pakken :D.
Krijg nu een foutmelding

Remove-ADUser : Cannot bind parameter 'Identity'. Cannot convert value "@{SamAccountName=writsema}" to type "Microsoft.ActiveDirectory.Management.ADUser". Error: "Cannot convert the
"@{SamAccountName=writsema}" value of type "Selected.Microsoft.ActiveDirectory.Management.ADUser" to type "Microsoft.ActiveDirectory.Management.ADUser"."
At line:4 char:19
+ Remove-ADUser $user
+ ~~~~~
+ CategoryInfo : InvalidArgument: (:) [Remove-ADUser], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.RemoveADUser

  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
Is even Googlen.

  • Dutch_Celt
  • Registratie: Juni 2008
  • Laatst online: 28-11 19:28

Dutch_Celt

Jollygood

Zoiets?

code:
1
$Users = Get-ADUser -Filter { LastLogonDate -notlike "*" -and Enabled -eq $true } -Properties LastLogonDate | Select-Object @{ Name="Username"; Expression={$_.SamAccountName} }, Name, LastLogonDate, DistinguishedName


code:
1
2
3
4
ForEach ($Item in $Users){
  Remove-ADUser -Identity $Item.DistinguishedName -Confirm:$false
  Write-Output "$($Item.Username) - Deleted"
}

  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
Dutch_Celt schreef op vrijdag 12 januari 2018 @ 15:39:
Zoiets?

code:
1
$Users = Get-ADUser -Filter { LastLogonDate -notlike "*" -and Enabled -eq $true } -Properties LastLogonDate | Select-Object @{ Name="Username"; Expression={$_.SamAccountName} }, Name, LastLogonDate, DistinguishedName


code:
1
2
3
4
ForEach ($Item in $Users){
  Remove-ADUser -Identity $Item.DistinguishedName -Confirm:$false
  Write-Output "$($Item.Username) - Deleted"
}
Dit dus, thanks!
Zal je code ff bestuderen, volgens mij kon ik met mijn eigen stukje code geen gebruiker verwijderen omdat powershell de string niet kon omzetten.

  • MdO82
  • Registratie: Maart 2007
  • Laatst online: 07:33
Het is inderdaad handig om users die enige tijd niet ingelogd zijn te verwijderen of op disable te zetten.
Wellicht is het handig om ook rekening te houden met service-accounts ?

Normaal gesproken staan deze in een aparte OU wellicht en kan je deze excluden in je lijst, maar als je dat vergeet dat worden telkens deze service-accounts verwijderd omdat deze eigenlijk alleen gebruikt worden voor een actie en niet inloggen op een machine.

2250 WP Zuid PVoutput


  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
MdO82 schreef op vrijdag 12 januari 2018 @ 15:46:
Het is inderdaad handig om users die enige tijd niet ingelogd zijn te verwijderen of op disable te zetten.
Wellicht is het handig om ook rekening te houden met service-accounts ?

Normaal gesproken staan deze in een aparte OU wellicht en kan je deze excluden in je lijst, maar als je dat vergeet dat worden telkens deze service-accounts verwijderd omdat deze eigenlijk alleen gebruikt worden voor een actie en niet inloggen op een machine.
Get-ADUser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | select SamAccountName,Name

Dit commando roept alleen de 'normale' accounts op. Service accounts en administrator worden hier buiten gelaten. :D

  • MdO82
  • Registratie: Maart 2007
  • Laatst online: 07:33
henkkeumus schreef op vrijdag 12 januari 2018 @ 15:52:
[...]


Get-ADUser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | select SamAccountName,Name

Dit commando roept alleen de 'normale' accounts op. Service accounts en administrator worden hier buiten gelaten. :D
Goed dat je er dus rekening mee gehouden hebt :)
Ik heb het helaas in het verleden vaak meegemaakt dat men fanatiek aan het ruimen was, maar dan iets te grof ;)

2250 WP Zuid PVoutput


  • henkkeumus
  • Registratie: Juli 2010
  • Laatst online: 09-11 20:06
MdO82 schreef op vrijdag 12 januari 2018 @ 15:54:
[...]


Goed dat je er dus rekening mee gehouden hebt :)
Ik heb het helaas in het verleden vaak meegemaakt dat men fanatiek aan het ruimen was, maar dan iets te grof ;)
Het blijft in een gevirtualiseerde testomgeving :P

  • @r!k
  • Registratie: April 2000
  • Laatst online: 23:19

@r!k

It is I, Leclerq

Tip, lees nog eens even goed door hoe vaak lastlogontimestamp gerepliceerd wordt. Als je dit zo uitvoert heb je kans dat je nieuw aangemaakte gebruikers die wel hebben ingelogd toch weg gooit.

Een hele rij microsoft certificeringen.


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
MdO82 schreef op vrijdag 12 januari 2018 @ 15:54:
[...]


Goed dat je er dus rekening mee gehouden hebt :)
Ik heb het helaas in het verleden vaak meegemaakt dat men fanatiek aan het ruimen was, maar dan iets te grof ;)
Haha, klinkt erg bekend. En nog mooier: op vrijdagnacht 22 December de accounts checken en mailtjes sturen naar alle accounts waar niet ingelogd mee is dat het account zonder tegenbericht na een week verwijderd wordt. Zo ben je met jaareinde klaar met opschonen.....alleen jammer dat iedereen op vakantie was met kerst, en dus op 2 Januari begint te schreeuwen.

When life gives you lemons, start a battery factory

Pagina: 1