Question Audit NETWORK DRIVE

Plus d'informations
il y a 4 ans 6 mois #21534 par Alexis
Audit NETWORK DRIVE a été créé par Alexis
Bonjour à toutes et tous ! Me revoilà avec mes questions étranges !

J'ai réalisé un petit script pour analyser tous les postes de mon domaine et savoir quels etaient les lecteurs réseau connectés sur les sessions ouvertes.

Pour ensuite savoir quelle lettre reste dispo ....

[code:1]function GetNetworkDrive {
set-item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 #On ajoute un peu de RAM car j'ai enormement de requete
$computerlist = get-adcomputer -filter * -searchbase \"OU=XxxXx\" -Property Name
[array]$table = @()
$cred = Get-Credential
stop-job *
remove-job * -force
ForEach ($computer in $computerlist) {
$Result1 = Get-WmiObject Win32_mappedlogicaldisk -credential $cred -computerName $computer.name -asjob
#$Result1 = Get-WmiObject Win32_LogonSessionMappedDisk -credential $cred -computerName $computer.name -ErrorAction SilentlyContinue -asjob
start-sleep -Milliseconds 10

}


$control = 1

Do {start-sleep -Milliseconds 30000

$control = $control + 1
if ($control = 3){stop-job *}

} While (Get-Job -state running)

$jobs = get-job
foreach($job in $jobs) {
$obj = New-Object PSObject
$CurrentJobId = $Job.id
$CurrentJobstate = $job.state
$CurrentJob = receive-job $currentjobid
$finalname = ($currentjob.name | out-string).trim()
$finalprovider = ($currentjob.providername | out-string).trim()
$finalname
$finalprovider
$obj | Add-Member Noteproperty \"Name\" -value $finalname
$obj | Add-Member Noteproperty \"Provider\" -value $finalprovider

$table+=$obj
}


$table
$table | export-csv -path c:\temp\FullNetworkDrive.csv -NoTypeInformation -delimiter \";\"
}

[/code:1]

Je précise que le script fonctionne !! toutes les requetes WMI passent et mon tableau est formaté ! pas encore tres bien, mais le resultat est là.

Le probleme que je rencontre c'est que beaucoup de mes postes ont des lecteurs réseaux montés, les sessions sont ouvertes et j'ai une réponse vide.

Alors que pour les postes non allumé j'ai une erreur RPC ( logique )

et certains postes ou j'ai un acces_denied ! Mais encore une fois j'ai une réponse.

Comment se fait il que certains postes ne m'indiquent pas d'erreur et ne me revoient pas l'info que je demande ??<br><br>Message édité par: Alexis, à: 2/03/16 16:18

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 6 mois #21535 par Alexis
Réponse de Alexis sur le sujet Re:Audit NETWORK DRIVE
Voici des exemples de mes réponses !

PS C:\Users\spagnolia&gt; Get-wmiobject Win32_mappedlogicaldisk -computerName pcdetest

PS C:\Users\spagnolia&gt;



Pourtant sur le pcdetest il y a bien des lecteurs reseaux de montés !


Je fais la même chose sur un autre poste de test. ou il n'y a pas de lecteur.

A la premiere commande rien comme le premier poste.

Une fois le lecteur monté, on repasse la commande et j'ai cette réponse !


PS C:\Users\spagnolia&gt; Get-WmiObject Win32_mappedlogicaldisk -computerName vm-pc732

PS C:\Users\spagnolia&gt;
PS C:\Users\spagnolia&gt; Get-WmiObject Win32_mappedlogicaldisk -computerName vm-pc732


__GENUS : 2
__CLASS : Win32_MappedLogicalDisk
__SUPERCLASS : CIM_LogicalDisk
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_MappedLogicalDisk.DeviceID=\&quot;R:\&quot;,SessionID=\&quot;25407252\&quot;
__PROPERTY_COUNT : 38
__DERIVATION : {CIM_LogicalDisk, CIM_StorageExtent, CIM_LogicalDevice, CIM_LogicalElement...}
__SERVER : VM-PC732
__NAMESPACE : root\cimv2
__PATH : \\VM-PC732\root\cimv2:Win32_MappedLogicalDisk.DeviceID=\&quot;R:\&quot;,SessionID=\&quot;25407252\&quot;


j’aimerai comprendre pourquoi je n'ai pas toujours la meme réponse !!


Je précise :: J’ai testé en user lambda. J'ai testé en lancant l'ISE en tant qu'admin.

j'ai essayé depuis des sessions admin.

j'ai essayé avec le param -credential et le COMPTE ADMIN DU DOMAIN !

rien à faire toujours le même résultat !! Merci bcp à ceux qui prendront le temps de me lire !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 6 mois #21536 par 6ratgus
Réponse de 6ratgus sur le sujet Re:Audit NETWORK DRIVE
bonjour Alexis
Alexis écrit:

Je précise :: J’ai testé en user lambda. J'ai testé en lancant l'ISE en tant qu'admin.

j'ai essayé depuis des sessions admin.

j'ai essayé avec le param -credential et le COMPTE ADMIN DU DOMAIN !

rien à faire toujours le même résultat !! Merci bcp à ceux qui prendront le temps de me lire !

En temps qu'admin tu doit savoir que
- les lecteurs qui remonte sur les sessions utilisateurs sont configurable pour chaque utilisateur,
- que ces lecteurs ne remonte que quand la session utilisateur est ouverture et qu'un \&quot;net use x: //serveur/partage\&quot; ou équivalent GPO ai été exécuté à l'ouverture
- ou que les lecteurs soit en mode persistent ! \&quot;net use x: //serveur/partage /persistent:yes\&quot;

Alexis écrit:

j’aimerai comprendre pourquoi je n'ai pas toujours la meme réponse !!

J'ai réalisé un petit script pour analyser tous les postes de mon domaine et savoir quels etaient les lecteurs réseau connectés sur les sessions ouvertes.

Le probleme que je rencontre c'est que beaucoup de mes postes ont des lecteurs réseaux montés, les sessions sont ouvertes et j'ai une réponse vide.

tu comprend donc que quand tu fait ton Get-WmiObject Win32_mappedlogicaldisk -credential $cred -computerName $computer.name il faut que ton $cred doit avoir le nom de l'utilisateur a ça session d'ouverte sur cette ordinateur au même moment !


tu doit donc tenir compte du nom de l'utilisateur connecté au moment de ta demande avec par exemple cette commande :
[code:1]$login = Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName $_.name -ErrorAction SilentlyContinue | select UserName[/code:1] a toi de trouvé le mot de passe correspondant :whistle:

je sens que tu va te t'arraché les cheveux sur ce projet !!!

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 6 mois #21538 par Alexis
Réponse de Alexis sur le sujet Re:Audit NETWORK DRIVE
Re, merci pour ta réponse rapide ;o)

En temps qu'admin tu doit savoir que
- les lecteurs qui remonte sur les sessions utilisateurs sont configurable pour chaque utilisateur,
- que ces lecteurs ne remonte que quand la session utilisateur est ouverture et qu'un \&quot;net use x: //serveur/partage\&quot; ou équivalent GPO ai été exécuté à l'ouverture
- ou que les lecteurs soit en mode persistent ! \&quot;net use x: //serveur/partage /persistent:yes\&quot;


Oui Oui au même titre qu'une ruche registre ouverte en runas ... le current user est celui qui ouvre la commande même si on est sur une session lambda ..


Je crois que la commande que tu me donnes me permet de remonter le user qui a servit à monter le lecteur réseau effectivement, car je l'ai testé si ma mémoire me fait pas défaut. Mais le user qui a monté le lecteur je m'en fiche.
Par contre du coup ton raisonnement m'a certainement expliqué pourquoi j'ai des réponse de certains postes alors que ce n'est pas moi qui suis logué dessus.

Avant toutes choses :

Win32_MappedLogicalDisk class

The Win32_MappedLogicalDisk WMI class represents network storage devices that are mapped as logical disks on the computer system.

Remarks

The instances returned for this class are as follows, supposing that user A is enumerating the instances:

The provider looks for a logon session of user A on that machine:
If there is one (and only one) such logon session, then the provider returns the mapped drives of that session.
If there is more than one session for user A on the machine, then no mapped drive instances are returned (because the provider has no reasonable way of deciding which session to use).

If there are no sessions of user A running, and there is a locally logged on user B:
If there is a single session for user B, then the provider impersonates A and returns the mapped drives of user B. This case supports the scenario of Helpdesk wanting to see the instances of a locally logged on user. However, whether instances are returned depends on the Local Security Policy settings in the Control Panel Administrative Tools. If the following policy is set to \&quot;Object Creator\&quot;, then no mapped drive instances are returned, even if A is a member of the Administrators group:

\&quot;System object: default owner for objects created by members of the administrators group.\&quot;
Again, if there is more than one session of user B running on the machine, then the provider has no way of deciding which to use. In this case, no mapped drive instances are returned.

For more information on using Win32_MappedLogicalDisk, see How Can I Determine Which Drives are Mapped to Network Shares?


Du coup je comprends que

SI je n’utilise pas le parametre -credential logiquement la commande WMi exécute un remote \&quot;NET USE\&quot; sur le poste cible sur la session en cours et non basé sur le credential qui execute la commande initiale !

Apres j'ai un autre probleme c'est que j'arrive à avoir les infos de certains poste alors que ttes les configurations sont similaires ! J'ai certainement mal compris qqch ;oD je rentre de vacance ! La fatigue ..... !!!

EDIT: Je viens de comprendre en relisant ! Les réponses que j'ai sont celles des postes ou le user loggué est admin de son poste localement !

Du coup rien à voir avec le credential, c'est juste que la commande est rééxécutée par le user logué sur son poste et comme il n'a pas les droits pour exécuter des requêtes wmi, je n'ai pas de retour d'erreur car la commande est bien passée mais la réponse est vide ! ... il faut simplement que juste avant la commande je passe le user admin de son poste que j'exécute le bloque et que je le supprime des admins ! C'est pour cela que j'avais des réponses de certains postes et pas de tous ! mais bon sur 2000 postes j'en avais 25 ... c'etait trop peu ;oD Vivement demain ;o)
msdn.microsoft.com/en-us/library/windows...94%28v=vs.85%29.aspx

Message édité par: Alexis, à: 2/03/16 18:20

Message édité par: Alexis, à: 2/03/16 18:24

Message édité par: Alexis, à: 2/03/16 18:58<br><br>Message édité par: Alexis, à: 2/03/16 19:00

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 6 mois #21539 par 6ratgus
Réponse de 6ratgus sur le sujet Re:Audit NETWORK DRIVE
salut Alexis

j'ai lu la doc et la partie que tu indique qui précise déjà que ce sera difficile d'avoir une réponse !
mais il semblerai aussi que Win32_MappedLogicalDisk ne soit plus capable de faire sont travail correctement celons ... \&quot;la release de Windows 7 ??\&quot;

j'ai pris un peu de temps fait quelques tests
des \&quot;Win32_MappedLogicalDisk\&quot; à distance
des \&quot;net use\&quot; à distance
avec et sans credantial
via powershell ou via Win32_process

au final j'ai cherché une solution et ici il pose la même question et utilise la même solution que là
à savoir :
- faire un script bat ou powershell :
pour bat :
[code:1]net use &gt;\\serveur\partage_inventaire\%COMPUTERNAME%_%username%.txt[/code:1]
pour powershell :
[code:1]Get-WmiObject -Class Win32_MappedLogicalDisk | ft name, providername &gt;\\serveur\partage_inventaire\$env:COMPUTERNAME_$env:USERNAME.txt[/code:1]
- faire une GPO qui lance ce bat ou script
- faire un script qui lis tous c'est fichiers pour avoir un etat des lieux !!!

si ton but et d'avoir cet état suite à un problème d'exécution de script à l'ouverture de session (comme j'ai eu en 2014 pendant plusieurs mois), tu peut utilisé les taches planifies que tu exécute a distance !
un exemple :
[code:1]
#
#---- active powershell a distance
#
$ordi = \&quot;pc_a_scanner\&quot;
schtasks /create /s $ordi /tn \&quot;Mon App\&quot; /F /tr \&quot;WinRM quickconfig -quiet\&quot; /sc once /st 23:59 /ru \&quot;domaine\compteadmin\&quot; /rp P@ssWord
schtasks /run /s $ordi /tn \&quot;Mon App\&quot;
sleep 10
schtasks /delete /f /s $ordi /tn \&quot;Mon App\&quot;

sleep 3

schtasks /create /s $ordi /tn \&quot;Mon App\&quot; /F /tr \&quot;powershell Enable-PSRemoting -force\&quot; /sc once /st 23:59 /ru \&quot;domaine\compteadmin\&quot; /rp P@ssWord
schtasks /run /s $ordi /tn \&quot;Mon App\&quot;
sleep 10
schtasks /delete /f /s $ordi /tn \&quot;Mon App\&quot;
[/code:1]

je te laisse le modifier pour qu'il fasse un \&quot;net use\&quot; comme le bat plus haut avec l'utilisateur en cours
et il te restera plus qu'a l'inséré dans la boucle de ton script

bon courage !

ps: après réflexion suis pas sur que l'utilisation de la tache planifier soit possible ! faut voir les options disponible sur schtasks<br><br>Message édité par: 6ratgus, à: 3/03/16 18:11

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.770 secondes
Propulsé par Kunena