Bonjour Amis développeurs,
J'ai un petit soucis avec un script POWERSHELL, j'ai cherché en vain sur le forum alors je viens glaner quelques avis de personnes un peu plus expérimentées que moi
Bon je m'explique, j'ai réalisé un petit script exécuté via GPO (logon user) qui audit le poste de l'utilisateur afin de lister les administrateurs locaux.
Il va alors mettre à jour un .CSV réseau afin d'ajouter une ligne dédiée au poste (composée du "computername","date","admin users").
Tout fonctionne bien seulement parfois le fichier perd la totalité des lignes enregistrées les jours précédents (Comme ci quelqu'un l'avait supprimé). Je me demande si cela n'est pas dû à 2 logins simultanés (à la seconde prêt du moins durant le traitement CSV) ce qui fait que mon "get-content" ne récupère aucune valeur (genre va voir "ailleurs", fichier en cours d'exécution...) mais c'est blizzard j'ai parfois des saisis de 2 provenances différentes à la même "heure/minutes/secondes" donc ca doit pas être le cas.
Quelqu'un aurait-il une idée genre libérer le fichier CSV après le get-content ? Tester s'il est utilisé avant ? Utiliser une autre méthode que get-content ? Je ne me vois pas faire une copie provisoire car je perdrai des entrées également....
Voici le bout de script concerné et le CSV (Si vous souhaitez le script complet je peut le mettre bien sûr) :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
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 $global:Members = "" $ListingDate = Get-Date -format 'dd/MM/yyyy HH:mm:ss' $CptName = $env:computername $ListingCSVALL = "\\...\Listing_All_PC_PROD.csv" ############################### Export Function Members ############################################### function Get-Members($computername,$groupname){ $computer = [ADSI]("WinNT://$computername,computer") $group=$computer.psbase.children.find($groupname) $group.psbase.invoke("Members") | ForEach-Object{ $Member = $_.GetType().InvokeMember("Name", ‘GetProperty’, $null, $_, $null) $global:Members = $global:Members + $Member + " / " } } ############################# END Export Function Members ############################################## ################################## BODY SCRIPT ################################################### $OSLanguage = (Get-Wmiobject Win32_OperatingSystem).OSLanguage # Find OS Language for variable initialization ($AdmGroup destiny to Get-Members Function) if ($OSLanguage -eq 1036){ # If Os language is on French $AdmGroup = "Administrateurs" } else{ # Or not $AdmGroup = "Administrators" } Get-Members $CptName $AdmGroup # Export members with Get-Members Function #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Phase 2 : global report Generation or update ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# $Listing = get-content $ListingCSVALL | where { -not ($_ -like "$CptName*")} set-content $ListingCSVALL $Listing # Export in CSV listing without actually computer Add-content -path $ListingCSVALL -Value "$CptName;$ListingDate;$global:Members" # Update CSV Listin with actually computer
Le CSV pour donner une idée de la fréquence (les date/heure sont les véridiques par contre j'ai viré des info entreprise, vous comprendrez... :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 PC1;05/10/2015 09:13:03;Administrateur / GRP AD / Domain Admins / GRP AD / PC2;05/10/2015 09:13:11;Administrateur / Domain Admins / GRP AD / toto / PC3;05/10/2015 09:13:56;Administrateur / Domain Admins / GRP AD / PC4;05/10/2015 09:14:32;Administrateur / Domain Admins / User / adminTemp / PC5;05/10/2015 09:14:51;Administrateur / Domain Admins / GRP AD / PC6;05/10/2015 09:15:22;Administrateur / Domain Admins / PC7;05/10/2015 09:15:39;Administrateur / Domain Admins / PC8;05/10/2015 09:17:04;Administrateur / Domain Admins / S-1-5-21-2346172643-988803912-3779244660-15844 / PC9;05/10/2015 09:18:15;Administrateur / Domain Admins / PC10;05/10/2015 09:18:43;Administrateur / Domain Admins / PC11;05/10/2015 09:19:07;Administrateur / Domain Admins / PC12;05/10/2015 09:40:28;Administrateur / a / PC13;05/10/2015 09:40:31;Administrateur / Domain Admins / PC14;05/10/2015 09:40:31;Administrator /
Bon si une âme charitable peut m'aider![]()
THX !
Partager