Question
Fonction et traitement via fichier ou ad
- Plarox
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 2 ans 4 mois #31570
par Plarox
Fonction et traitement via fichier ou ad a été créé par Plarox
bonjour à tous je vient vers vous car malgrés mes heures passer devant mon script je ne trouve pas de solution
a la base on ma demander de faire un script qui interroge l'AD pour savoir quelle machine est admin local du pc
mon script fait le taf et sort 3 fichiers -1 fichier (csv) des ordinateurs etant admin local
- 1 fichier (csv) des ordinateurs non testés car déconnecté
- 1 fichier (rtf) pour les logs
voila ou j'ai besoins de votre aide
============================ 1 er point==========================
on me demande que mon script prennent en compte le fichier csv des machines non testé du passage precedant
en gros si un fichier csv existe alors on charge ses valeur et on lance le teste
si il n'y as pas de fichier csv alors on cherche dans l'AD
tous ca en utilisant 2 fonctions
========================= 2 iem points =======================================
concernant la gestion des fichiers
il faut que tous les fichier log soit enregistré donc a la creation des log le nom doit changer par exemple logdate+heure.rtf ou un autre systeme plus facile ^^
ensuite que mon fichier csv des machine non connecter soit suprimee et remplacer par la sauveguarde du nouveau passage sinon j'ai un probleme dupplication
merci d'avance pour votre aide
je suis dispo pour toute infos complementaires
a la base on ma demander de faire un script qui interroge l'AD pour savoir quelle machine est admin local du pc
mon script fait le taf et sort 3 fichiers -1 fichier (csv) des ordinateurs etant admin local
- 1 fichier (csv) des ordinateurs non testés car déconnecté
- 1 fichier (rtf) pour les logs
voila ou j'ai besoins de votre aide
============================ 1 er point==========================
on me demande que mon script prennent en compte le fichier csv des machines non testé du passage precedant
en gros si un fichier csv existe alors on charge ses valeur et on lance le teste
si il n'y as pas de fichier csv alors on cherche dans l'AD
tous ca en utilisant 2 fonctions
$n=0
$v=0
$w=0
$strFilePathResut = $PSCommand.Basename + ".csv"
$log = "c:\temp\logAdminLocal.rtf"
$strFilePathNotConnected = "C:\temp\NotestAdminLocal.csv"
$arrayComputersName = Import-CSV -path "C:\temp\NontestAdminLocal.csv" -Encoding UTF8
Function Get-ComputersFromFile {
[cmdletbinding()]
Param (
[string]$strFilePath
)
# End of Parameters
Process {
}
}
Function Get-ComputersFromAD {
[cmdletbinding()]
Param (
[string]$LDAPSearchRoot
)
# End of Parameters
Process {
}
}
#Si j'ai un fichier strFilePathNoConnected, je charge les valeur
$arrayComputersName = Get-ComputersFromFile $strFilePathNoConnected
#Sinon je recherche dans l'AD
$arrayComputersName = Get-ComputersFromAD "OU=Racine,DC=xxx,DC=local"
$ObjFilter = "(objectClass=Computer)"
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.PageSize = 15000
$objSearch.Filter = $ObjFilter
#--------------------------------------------------------------------
# domaine
#--------------------------------------------------------------------
$objSearch.SearchRoot = "LDAP://OU=Racine,DC=xxx,DC=local"
$AllObj = $objSearch.FindAll()
Start-Transcript -Path $log
Write-host -nonewline "Vérification en cour ..." `n
# Mise en place de la boucle pour chaque ordinateurs de l'AD
#-------------------------------------------------------------------
# bloucler sur $arrayComputersName
foreach ($Obj in $AllObj)
{
$objItemT = $Obj.Properties
$Computer = $objItemT.name
############# machine en cours de vérififaction et test de connection
Write-host -nonewline "Vérification Machine $Computer" `n
if ( Test-Connection $Computer -count 1 -quiet )
{
Get-WmiObject Win32_UserAccount -ComputerName $computer
############# groupe Administrateurs a rechercher sur le poste Administrateurs
$MembresAdmin =""
$Connexion = [ADSI]"WinNT://$Computer/Administrateurs,group"
#===============================================================================================================================================================================================
############# remplacement admin* par *admin* (xxx\admin...)
$MembresAdmin = $Connexion.psbase.invoke('Members') | %{$_.GetType().InvokeMember('Name','GetProperty', $null, $_, $null)}| Where-Object {$_ -notlike "*admin*" -and $_ -notlike ""}
if ( !$MembresAdmin )
{
Write-host -nonewline "Machine $Computer testé mais sans compte admin local" `n
}
#===============================================================================================================================================================================================
else
{
Write-host -nonewline "Machine $Computer connecté avec compte administrateur local"`n
"Nom de la machine , Nom du compte
$Computer , $MembresAdmin
------------" | Out-File -filepath $strFilePathResut -encoding ASCII -append
}
$v++
}
else
{
Write-host -nonewline "Machine $Computer non conectées" `n
"Machine non teste;
$Computer;
------------" | Out-File -filepath $strFilePathNoConnected -encoding ASCII -append
$n++
}
}
Write-host "il y a $n machines deconectées"
Write-host "il y a $v machines conectées"
$w=$n+$v
Write-Host "Il y a $w machines"
Write-host -nonewline "Vérification terminé"
Stop-Transcript
========================= 2 iem points =======================================
concernant la gestion des fichiers
il faut que tous les fichier log soit enregistré donc a la creation des log le nom doit changer par exemple logdate+heure.rtf ou un autre systeme plus facile ^^
ensuite que mon fichier csv des machine non connecter soit suprimee et remplacer par la sauveguarde du nouveau passage sinon j'ai un probleme dupplication
merci d'avance pour votre aide
je suis dispo pour toute infos complementaires
Connexion ou Créer un compte pour participer à la conversation.
- Plarox
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 2 ans 4 mois #31573
par Plarox
Réponse de Plarox sur le sujet Fonction et traitement via fichier ou ad
j'ai remplis les 2 fonctions
dans les 2 cas la variable $arrayComputersName contient bien les nom des machine a tester que sa soit via le fichier csv dans la fonction Get-ComputersFromFile
ou via l'AD avec la fonction Get-ComputersFromAD ce qui donne
ensuite je fait ma condition - si j'ai le fichier csv je charge les valeur de la fonction Get-ComputersFromFile
-sinon je charge les valeurs de la fonction Get-ComputersFromAD
une fois les valeurs charger dans la variable $arrayComputersName je doit faire une boucle pour que tous les ligne soit traiter par mon code
qu'est ce que je doit mettre dans mon foreach ???
dans les 2 cas la variable $arrayComputersName contient bien les nom des machine a tester que sa soit via le fichier csv dans la fonction Get-ComputersFromFile
ou via l'AD avec la fonction Get-ComputersFromAD ce qui donne
Function Get-ComputersFromFile {
Param ([string]$ComputersName)
$ComputersName = Import-CSV -path "C:\temp\NotestAdminLocal.csv" -Encoding UTF8
}
Function Get-ComputersFromAD {
Param ([string]$ComputersName)
#-------------------- Domaine ---------------------------------------
$adFilter = "(objectClass=Computer)"
$adSearch = New-Object System.DirectoryServices.DirectorySearcher
$adSearch.PageSize = 15000
$adSearch.Filter = $adFilter
$adSearch.SearchRoot = "LDAP://OU=Racine,DC=xxxx,DC=local"
$adall = $adSearch.FindAll()
$adItemT = $Adall.Properties
$ComputersName = $adItemT.name
}
ensuite je fait ma condition - si j'ai le fichier csv je charge les valeur de la fonction Get-ComputersFromFile
-sinon je charge les valeurs de la fonction Get-ComputersFromAD
#===============================================================================
#Si j'ai un fichier strFilePathNotConnected, je charge les valeur
if (Test-Path "C:\temp\NotestAdminLocal.csv"){
$arrayComputersName = Get-ComputersFromFile $ComputersName
}
#===============================================================================
#===============================================================================
#Sinon je recherche dans l'AD
else
{$arrayComputersName = Get-ComputersFromAD $ComputersName
}
#===============================================================================
une fois les valeurs charger dans la variable $arrayComputersName je doit faire une boucle pour que tous les ligne soit traiter par mon code
qu'est ce que je doit mettre dans mon foreach ???
foreach ( JeMetQuoi in $arrayComputersName)
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 2 ans 4 mois - il y a 2 ans 4 mois #31577
par Philippe
Réponse de Philippe sur le sujet Fonction et traitement via fichier ou ad
salut plarox
alors pour la boucle, oui tu doit mettre une variable, par exemple :et tu utilise la variable $ordinateur dans la boucle pour les action que tu a besoin, comme fais dans la boucle :ou tu vois que les objets récupéré dans l'AD qui sont dans $AllObj sont mis un par un dans $obj et utilisé dans la boucle,
sur ces deux dernières lignes, il récupère les propriétés d'un ordi dans $objitemT puis le nom de l'ordi dans $computer pour l'utilisé dans le reste de la boucle !
pour la suite de tes demande je te conseil de faire une demande de conseil à la fois, ce sera plus simple,
bon courage pour la suite
alors pour la boucle, oui tu doit mettre une variable, par exemple :
foreach ( $ordinateur in $arrayComputersName)
foreach ($Obj in $AllObj)
{
$objItemT = $Obj.Properties
$Computer = $objItemT.name
sur ces deux dernières lignes, il récupère les propriétés d'un ordi dans $objitemT puis le nom de l'ordi dans $computer pour l'utilisé dans le reste de la boucle !
pour la suite de tes demande je te conseil de faire une demande de conseil à la fois, ce sera plus simple,
bon courage pour la suite
Dernière édition: il y a 2 ans 4 mois par Philippe.
Les utilisateur(s) suivant ont remercié: Plarox
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 4 mois #31578
par ericlm128
Réponse de ericlm128 sur le sujet Fonction et traitement via fichier ou ad
Voir ici pour ma réponse : www.developpez.net/forums/d2123682/gener...chier-l-ad-fonction/
Les utilisateur(s) suivant ont remercié: Plarox
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 3 mois #31623
par ericlm128
Réponse de ericlm128 sur le sujet Fonction et traitement via fichier ou ad
Tu peux aussi clôturer le sujet ici si c'est terminée
Les utilisateur(s) suivant ont remercié: Plarox
Connexion ou Créer un compte pour participer à la conversation.
- Plarox
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 2 ans 3 mois #31624
par Plarox
Réponse de Plarox sur le sujet Fonction et traitement via fichier ou ad
bonne idée mais malgres mes recherche je ne trouve pas le moyen de cloturer se sujet
en tous cas merci pour votre aide le script est fonctionnel.
en tous cas merci pour votre aide le script est fonctionnel.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.075 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Fonction et traitement via fichier ou ad