-
Notifications
You must be signed in to change notification settings - Fork 0
/
powershell_user.ps1
194 lines (143 loc) · 5.44 KB
/
powershell_user.ps1
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
#menu d'options 1
# Action
# Sur cet ordi
# Remote
# Information
#Sur cet ordi
# Remote
Switch ("<valeur à tester>")
{
"<condition 1>" { "bloc de code (instructions)" }
"<condition 2>" { "bloc de code (instructions)" }
"<condition 3>" { "bloc de code (instructions)" }
"<condition 4>" { "bloc de code (instructions)" }
Default { "bloc de code (instructions)" }
$action = Read-Host -Prompt "Que souhaiter vous faire ?"
$information = Read-Host -Prompt "Que souhaiter vous faire ?"
switch ($action)
{
"notepad" { Start-Process notepad.exe }
"powershell" { Start-Process powershell.exe }
"calc" { Start-Process calc.exe }
"regedit" { Start-Process regedit.exe }
Default { "Désolé, je n'ai pas trouvé ce logiciel" }
}
}
# Menu 2 Action
#A1 : Création de compte utilisateur local A VERIF
New-LocalUser
#A2 : changement de mdp
Set-LocalUser
#Vérfie l'utilisateur existe (si vide alors on passe l'étape)
#Mettre l'ancien mdp
#Mettre nouveau mdp
#Confirmation nouveau mdp
#Message erreur / changement réussi
#A3 suppression de compte utilsiateur local
Remove-LocalUser
#A4 Désactivation compte utilisateur local
Disable-LocalUser
#Verif utilisateur existe
#SI non -> erreur
#SI oui ->Confirmation
#commande désac
#SI non -> erreur
#A5 ajout à un grp d'adminsitration
Add-?????????GroupMember
#Verif utilisateur existe
#Demande quel grp d'admin ?
#Verif grp existe
#Confirmation
#SI non -> erreur
#A6 ajout à un grp local
Add-LocalGroupMember
#Verif utilisateur existe
#SI non -> erreur
#Demande quel grp local ?
#Verif grp existe
#Confirmation
#SI non -> erreur
#A7 sortie d'un groupe local
Remove-LocalGroupMember
#Verif utilisateur existe
#SI non -> erreur
#Demande quel grp local ? liste des groupe Get-LocalGroup
#Verif grp existe
#Confirmation
#SI non -> erreur
# Commande sortie de grp
#Confirmation
#Msg validation
#Msg erreur
#Menu 2 Info
#I1 Date de derniere connexion d'un utilisateur
<#
.SYNOPSIS
Obtenir la date et l'heure de dernière connexion d'un utilisateur ou de tous les utilisateurs activés, via lecture de l'attribut lastLogon sur tous les DC.
.EXAMPLE
Get-ADUserLastLogon -Identity "admin.fb"
Get-ADUserLastLogon
.INPUTS
.OUTPUTS
.NOTES
NAME: Get-ADUserLastLogon.ps1
AUTHOR: Florian Burnel
EMAIL: [email protected]
VERSION HISTORY:
1.0 14/05/2024
1.1 18/07/2024
#>
function Get-ADUserLastLogon {
[CmdletBinding()]
param(
[Parameter(Mandatory=$false)][ValidateScript({Get-ADUser $_})]$Identity=$null
)
# Création d'un tableau vide
$LastLogonTab = @()
# Récupérer la liste de tous les DC du domaine AD
$DCList = Get-ADDomainController -Filter * | Sort-Object Name | Select-Object Name
# Déterminer la liste des utilisateurs (un utilisateur ou tous les utilisateurs activés)
if($Identity -eq $null){
$TargetUsersList = (Get-ADUser -Filter {Enabled -eq $true}).samAccountName
}else{
$TargetUsersList = $TargetUser
}
Foreach($TargetUser in $TargetUsersList){
# Initialiser le LastLogon sur $null comme point de départ
$TargetUserLastLogon = $null
Foreach($DC in $DCList){
$DCName = $DC.Name
Try {
# Récupérer la valeur de l'attribut lastLogon à partir d'un DC (chaque DC tour à tour)
$LastLogonDC = Get-ADUser -Identity $TargetUser -Properties lastLogon -Server $DCName
# Convertir la valeur au format date/heure
$LastLogon = [Datetime]::FromFileTime($LastLogonDC.lastLogon)
# Si la valeur obtenue est plus récente que celle contenue dans $TargetUserLastLogon
# la variable est actualisée : ceci assure d'avoir le lastLogon le plus récent à la fin du traitement
If ($LastLogon -gt $TargetUserLastLogon)
{
$TargetUserLastLogon = $LastLogon
}
# Nettoyer la variable
Clear-Variable LastLogon
}
Catch {
Write-Host $_.Exception.Message -ForegroundColor Red
}
}
$LastLogonTab += New-Object -TypeName PSCustomObject -Property @{
SamAccountName = $TargetUser
LastLogon = $TargetUserLastLogon
}
Write-Host "lastLogon de $TargetUser : $TargetUserLastLogon"
Clear-Variable -Name "TargetUserLastLogon"
}
return $LastLogonTab
}
#I2 date de derniere modification du mot de passe
Get-LocalUser -Name "NomUtilisateur" | Select-Object Name, PasswordLastSet
#I3 Liste des sessions ouvertes par l'utilisateur
Get-PSSession -ComputerName "localhost"
#I4 Droits/permissions de l’utilisateur sur un dossier
Get-PublicFolderClientPermission -Identity "\My Public Folder" -User Chris | Format-List
#I5 Droits/permissions de l’utilisateur sur un fichier