PowerShell/Utilisateur

Révision datée du 13 août 2024 à 17:48 par Fylip22 (discussion | contributions) (Page créée avec « {{Sommaire}} == Serveur RDS, liste des dossiers "users" == Liste des dossiers <source inline>c:\users\compte\</source> et <source inline>c:\users\local_compte\</source> sur chaque RDS (de 01 à 20) : <source> <# Nom : PSHUTL001 Description : liste des dossiers de profil utilisateur de bureau distant présents sur les serveurs RDS Usage : à lancer depuis un des serveurs RDS ; saisir le nom du compte à analyser Particularité : néant Auteur... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Serveur RDS, liste des dossiers "users"

Liste des dossiers c:\users\compte\ et c:\users\local_compte\ sur chaque RDS (de 01 à 20) :

<#
Nom           : PSHUTL001
Description   : liste des dossiers de profil utilisateur de bureau distant présents sur les serveurs RDS 
Usage         : à lancer depuis un des serveurs RDS ; saisir le nom du compte à analyser
Particularité : néant
Auteurs       : fylip22
Version       : 1.0
Révisions     :
              - 1.0 (24/08/2023) : création du script
              - 1.1 (09/02/2024) : modification pour l'affichage des étapes
#>

# Liste des dossiers "users" sur tous les serveurs RDS :
Clear-Host
Write-Host "Liste des dossiers Users sur tous les serveurs RDS"
Write-Host 

$Compte = Read-Host "Saisir le nom d'un compte"

# création de la liste des serveurs RDS à analyser : PHPRDS01 à PHPRDS20
$RDSListe = (1..20).ForEach({ "{0}{1:d2}" -f "PHPRDS", $_ })

Write-Host 
Write-Host ("Test du serveur {0} au serveur {1} :" -f $RDSListe[0], $RDSListe[-1])

foreach ($RDS in $RDSListe) {
    $cheminCompte = "\\$RDS\c$\users\$Compte"
    $cheminLocal_Compte = "\\$RDS\c$\users\local_$Compte"
    if (Test-Path -Path $cheminCompte) {
        Write-Host ("{0}, présence du dossier '{1}'" -f $RDS, $Compte)
        }

    if (Test-Path -Path $cheminLocal_Compte) {
        Write-Host ("{0}, présence du dossier 'local_{1}'" -f $RDS, $Compte)
        }
    }

Write-Host 
Write-Host "Fin du traitement"
Write-Host 
Read-Host "Appuyer sur une touche pour continuer"

Liste des dossiers c:\users\ sur chaque RDS (de 01 à 13) :

<#
Nom           : PSHUTL002
Description   : liste des dossiers de profil utilisateur de bureau distant présents sur les serveurs RDS 
Usage         : à lancer depuis un des serveurs RDS 
Particularité : néant
Auteurs       : fylip22
Version       : 1.0
Révisions     :
              - 1.0 (20/02/2024) : création du script
#>

$RDSListe = (1..13).ForEach({ "{0}{1:d2}" -f "PHPRDS", $_ })
$ListeTout = $null

foreach ($RDS in $RDSListe) {
    $cheminCompte = "\\$RDS\c$\users\"
    
    # ajoute chaque dossier trouvé à la liste
    $ListeTout += Get-ChildItem -Path $cheminCompte | Select-Object name 
    }

# Affichage du résultat, trié sur le nom
$ListeTout | Sort-Object name

Compte local

Création

Création d'un compte local en manuel :

# liste des comptes locaux
Get-LocalUser

# nom du compte
$compte = "Nomade"

# Fenêtre de saisie pour le mot de passe
$Password = Read-Host -AsSecureString

# Création du compte
New-LocalUser $compte -Password $Password -FullName $compte -Description $compte

Avec un script

<#
Nom         : PSHUTL003
Description : création d'un compte utilisateur local avec appartenance à deux groupes de sécurité
Usage       : exercice en PowerShell
Auteurs     : fylip22
Version     : 1.1
Révisions   :
    - 1.0 (01/12/2023) : création du script
    - 1.1 (24/04/2024) : personnalisation
#>

# liste les paramètres pour la création de l'utilisateur
$compte = 'recupe'
$parametreListe = @{
    Name        = $compte
    Password    = (ConvertTo-SecureString "MonMotDePasse2023*" -AsplainText -Force)
    FullName    = $compte
    Description = '$compte temporaire'
    AccountNeverExpires = $true
    PasswordNeverExpires = $true
    }
New-LocalUser @parametreListe

# ajout de l'utilisateur à différents groupes de sécurité locaux
Add-LocalGroupMember -Group "Administrateurs" -Member $compte
Add-LocalGroupMember -Group "Utilisateurs du Bureau à distance" -Member $compte

Suppression

Suppression d'un compte local en manuel :

Remove-LocalUser -Name "nomade"

Avec un script

<#
Nom         : PSHUTL004
Description : suppression d'un compte utilisateur local 
Usage       : exercice en PowerShell
Auteur      : fylip22
Version     : 1.1
Révisions   :
    - 1.0 (01/12/2023) : création du script
    - 1.1 (24/04/2024) : personnalisation
#>

Clear-Host

$compteASupprimer = "recupe"
if (Get-LocalUser -name "$compteASupprimer" -ErrorAction Ignore) {
    Remove-LocalUser -Name "$compteASupprimer"
    Write-Output "Compte '$compteASupprimer' supprimé"
    }
else {
    Write-Output "Le compte '$compteASupprimer' n'existe pas"
    }

# Liste des comptes locaux
Get-LocalUser

Groupe et utilisateur

Explication Code
Liste des utilisateurs du groupe de sécurité PhpCompta Get-ADGroupMember -Identity PhpCompta | sort-object name | ft name
Création de l'utilisateur "nomade", sans mot de passe : New-LocalUser -fullname 'MonCompte' -Name 'nomade' -noPassword
Modification de l'utilisateur "nomade", modification mot de passe : get-localuser -name 'MonCompte' | set-localuser -Password (ConvertTo-SecureString "MonMotDePasse1234*" -AsplainText -Force)
Modification de l'utilisateur "nomade", pas d'expiration du mot de passe : get-localuser -name 'MonCompte' | set-localuser -PasswordNeverExpires $true
Modification de l'utilisateur "nomade", l'utilisateur ne peut pas modifier le mot de passe : get-localuser -name 'MonCompte' | set-localuser -UserMayChangePassword $false
Ajout de l'utilisateur "nomade" au groupe de sécurité local "Utilisateurs" : get-localuser -name 'MonCompte' | Add-LocalGroupMember 'Utilisateurs'
Liste des utilisateurs du groupe local "Utilisateurs du Bureau à distance" : Get-LocalGroupMember -Group 'Utilisateurs du bureau à distance'
Création de groupe de sécurité : New-ADGroup "PhpCompta" -Description "Accès dossier bureautique K:\Compta" -Path "OU=Compta,DC=php,dc=local" -GroupCategory Security -GroupScope Global
Ajout d'utilisateurs ou de groupe d'utilisateur au groupe local "Utilisateurs du Bureau à distance" : Add-LocalGroupMember -Group 'utilisateurs du bureau à distance' -Member ('groupe1' , 'Admins du domaine')
Add-LocalGroupMember -Group 'utilisateurs du bureau à distance' -Member 'test'
Suppression d'utilisateurs ou de groupe d'utilisateur du groupe local "Utilisateurs du Bureau à distance" : Remove-LocalGroupMember -Group 'utilisateurs du bureau à distance' -member 'test'

Liste des groupes d'un utilisateur, affichage avec séparateur point-virgule :

$compte = "martina"
(Get-ADUser $compte –Properties MemberOf).memberof | Get-ADGroup | Select-Object name | Sort-Object name | ForEach-Object {write-host -NoNewLine "$($_.name);"}

Affectation de plusieurs groupes à un utilisateur :

$user = "uncompte"
   # affectation des groupes standards
$groupes = @("phpcompta", "phpgaec", "phpgerant"")
foreach ($groupe in $groupes) {
    Add-AdGroupMember -Identity $groupe -members $user
    }
   # affectation des groupes spécifiques
$groupeutilisateur =@("phpcompta" ,"capcompta")
foreach ($groupe in $groupeutilisateur) {
    Add-AdGroupMember -Identity $groupe -members $user
    }

Ménage sur profil itinérant (FSLogix)

<#
Description : suppression des fichiers et dossiers du profil itinérant
Usage       : à lancer depuis le serveur RDS où la session du profil à nettoyer est ouverte
Particularité : ne traite que les fichiers datant de plus de deux jours ; voir la variable
Auteurs     : fylip22
Version     : 1.0
Révisions   :
              - 1.0 (24/08/2023) : création du script
#>

# Nom du compte à traiter
$Compte = "lecompte"

# Ancienneté des fichiers à traiter
$FichierAnciennete = 2

# Liste des dossiers à traiter (ces dossiers sont les plus volumineux en nombre et en taille de fichiers)
$DossierListe = @(
    "C:\users\$compte\AppData\LocalLow\Adobe\Acrobat\DC\ConnectorIcons",
    "C:\users\$compte\AppData\Local\Microsoft\Edge\User Data\Default\Cache\Cache_Data",
    "C:\users\$compte\AppData\Local\Microsoft\Edge\User Data\Default\Service Worker\CacheStorage",
    "C:\Users\$compte\AppData\Local\Microsoft\Outlook\RoamCache",
    "C:\users\$compte\AppData\Local\Microsoft\Terminal Server Client\Cache",
    "C:\users\$compte\AppData\Local\Microsoft\Windows\INetCache\Content.MSO",
    "C:\users\$compte\AppData\Local\Microsoft\Windows\INetCache\IE"
)

Foreach ($Dossier in $DossierListe) {
    Get-ChildItem -path $Dossier | 
        Where { ($_.CreationTime -lt (Get-Date).addDays(-$FichierAnciennete)) -and ($_.LastWriteTime -lt (Get-Date).addDays(-$FichierAnciennete))} | 
        Remove-Item -Recurse -Force
    }

Voir aussi

  •