Question Lister les shares d'un domaine

Plus d'informations
il y a 14 ans 7 mois #5334 par Laurent Dardenne
Chiqo écrit:

soit j'y arrive en continuant sur ma lancé

Je dirais que c'est plutot en te lançant dans ce codage que tu sauras si cela est possible, rien ne dit que tu arrives à tes fins.
De coder directement en C# sera plus rapide je pense.
Chiqo écrit:

j'avais abandonné cette idée (je voulais passer par WMI pour du monitoring).

Il faut savoir si cela est dû au contexte de l'entreprise ou à un pb technique...
Chiqo écrit:

Sans doute parce que je ne sais pas précisément comment charger l'assembly (mauvais namespace ?)

Il n'y a pas d'assembly à charger, le seul assembly que tu pourrais avoir,je pense,serait un PIA.
[code:1][Activator]::CreateInstance([IFileSystemBindData2]::GetJunctionCLSID(\"208D2C60-3AEA-1069-A2D7-08002B30309D\"«»))[/code:1]
Comme ça tu ne vas pas t'en sortir :/
[code:1]
$NetP = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]\"{208D2C60-3AEA-1069-A2D7-08002B30309D}\"«»))
[/code:1]
Sache que l'on récupère un object de la classe __ComObject brute de fonderie, c'est à dire qui n'est pas adapté par PowerShell.
Il va donc falloir utiliser ce type d'appel ou vérifier cette piste .
Du pure bonheur :-)
Chiqo écrit:

La gestion des pointeurs est compliqué sous powershell ?

Par rapport au code précédent, non ;-).
[code:1]
#Pointeur
[ref]$createdNew=$false
#Valeur pointée
$createdNew.Value
[/code:1]
Les méthodes dotnet déclarant un paramètre out sont gérés dans PowerShell :
[code:1]
$created=$false
$Mutex=New-Object System.Threading.Mutex $true, $MutexName,$created
#exception
New-Object : L'argument « 3 » doit être de type System.Management.Automation.PSReference. Utilisez [ref].
[/code:1]
Chiqo écrit:

Peut-on récupérer l'objet qui est sous le pointeur (mon fameux IShellFolder !)

Cette API est dispo à partir de Vista, donc à priori sous WS2003 également.
Pour le moment je suis sous XP et je n'ai pas le temps de tester.
Si je trouve un peu de temps je regarde ça sous VisualStudio.

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 7 mois #5335 par Chiqo
Réponse de Chiqo sur le sujet Re:Lister les shares d'un domaine
Laurent Dardenne écrit:

Je dirais que c'est plutot en te lançant dans ce codage que tu sauras si cela est possible, rien ne dit que tu arrives à tes fins.
De coder directement en C# sera plus rapide je pense.


Je n'ai jamais coder en C#, mais ce sera l'occasion. En fait le temps joue contre moi.

Laurent Dardenne écrit:

Il faut savoir si cela est dû au contexte de l'entreprise ou à un pb technique...


Hmm, disons qu'il n'y à pas de GPO builtin Microsoft pour faire cela. Écrire un .adm aurait été faisable si j'aurais trouvé les registres modifiés lorsqu'on donne les droits WMI remote. Manque de doc à ce niveau ?

Laurent Dardenne écrit:

[code:1]
$NetP = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]\"{208D2C60-3AEA-1069-A2D7-08002B30309D}\"«»))
[/code:1]
Sache que l'on récupère un object de la classe __ComObject brute de fonderie, c'est à dire qui n'est pas adapté par PowerShell.

En fait j'en étais arrivé là, et un get-member m'avais fait comprendre qu'il s'agissait un objet COM.

Laurent Dardenne écrit:

Si je trouve un peu de temps je regarde ça sous VisualStudio.


Merci, je vais regarder également ;)

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

Plus d'informations
il y a 14 ans 7 mois #5336 par Chiqo
Réponse de Chiqo sur le sujet Re:Lister les shares d'un domaine
Une idée qui me vient comme ça :

Est-il possible de coder une cmdlet en C# que je puisse intégrer à powershell ?

Si oui, faut-il avoir un VS d'installer après compilation du code C# pour utiliser la cmdlet ?

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

Plus d'informations
il y a 14 ans 7 mois #5337 par Laurent Dardenne
Chiqo écrit:

Est-il possible de coder une cmdlet en C# que je puisse intégrer à powershell ?

Oui tout à fait.
Tu peux aussi utiliser des composants tiers spécialisés, si tu ne veux pas plonger dans les API.
Chiqo écrit:

Si oui, faut-il avoir un VS d'installer après compilation du code C# pour utiliser la cmdlet ?

Non, juste l'assembly et les possibles dépendances.

De mon coté j'ai regardé un peu sous Windows Seven, l'exemple du blog fonctionne, mais pour l'usage du folder je ne suis pas allé très loin. Je supposes que cela est dû au fait que le premier propose une librairie de type (tlb) mais pas le second, à moins qu'il faille passer par la construction d'une fenêtre...

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 6 mois #5370 par Chiqo
Réponse de Chiqo sur le sujet Re:Lister les shares d'un domaine
J'ai continuer mes recherches, je suis sur deux pistes :)

ALors, la commande
[code:1]
net view /DOMAIN:mondomaine[/code:1]

C'est pas très propre, mais ça semble possible de parser le résultat (je suis pas au taf la, je peux tester qu'avec mon WORKGROUP :X). Bref, je test ça demain.

En feuilletant le livre qu'on peut voir sur la gauche, j'ai fait un rapprochement entre un exemple ADSI (le script pour lister les users admins local) et un script VBS du net qui semble utiliser une syntaxe similaire, et qui permet de lister les shares d'un server d'un domaine, malheureusement je ne trouve plus l'URL :/ Je me suis dit que peut être on pouvait récupérer à l'aide d'ADSI ce que je voulais.

A voir donc... !

[edit]Le fameux script En fait c'est du JavaScript, je vais voir comment je peux traduire ça en PowerShell, l'API ADSI à pas l'air évidente :(

J'ai aussi creuser la piste déploiement d'une config WMI.

J'ai trouvé la clé de registre modifié lors de l'ajout d'un user pour les objets DCOM (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole). J'ai donc pris un serveur de test, ajouté mon user, exporté cette clé, et importer sur un autre serveur (du même domaine). Ça marche. Reste à trouver la clé de registre pour les droits sur les classes. L'idée serait ensuite de déployer cette clé par script ou GPO (j'suis un peu un noob Microsoft, on verra).

Par contre, je rencontre un problème un peu bizarre (rien a voir avec ma manière de procédé, cela arrive aussi en passant par une config WMI manuelle).

Lorsque j'effectue certaines requêtes remote (select * from Win32_Share par exemple), une jolie erreur apparait (provider machin truc chouette ; j'ai plus l'erreur en tête, j'ai pas penser à me noter l'erreur). La ou c'est fort, c'est qu'une fois la même requête lancé en local (en local, elle passe) je peux l'exécuter en remote !! Comme si la requête local activait le provider pour certaines classes.

Ce forum n'est peut être pas l'endroit idéal pour des questions WMI, mais je tente quand même à tout hasard :)

Enfin voilà, je continuerais à donner des nouvelles de mon avancement, dès fois que ça serve à d'autres ;)

Message édité par: Chiqo, à: 30/09/09 09:02<br><br>Message édité par: Chiqo, à: 30/09/09 09:31

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

Plus d'informations
il y a 14 ans 6 mois #5371 par Laurent Dardenne
Chiqo écrit:

C'est pas très propre, mais ça semble possible de parser le résultat

Je serais tenté de dire que ce n'est peut être pas le plus important. Tu te démenes pour arriver à un résultat, ça mérite le respect!
Personne ne t'as donné de solution, la tienne sera donc excellente, perfectible certes.
Chiqo écrit:

Ce forum n'est peut être pas l'endroit idéal pour des questions WMI, mais je tente quand même à tout hasard

Tant que tu ne nous proposes pas du code d'implémentation de providers en C++, cela me semble jouable ;-)
WMI a été conçu pour faciliter l'administration système, Powershell pour unifier ce qui facilite l'administration. Tu es donc en plein dedans!

Ensuite d'avoir un message d'erreur c'est vrai que ça aidera d'autres à t'aider ou d'essayer, c'est l'intention qui comptes.

En passant, le lien vers le code javascript est erroné.
Chiqo écrit:

des fois que ça serve à d'autres

De mon coté je trouve qu'il est toujours trés intéressant d'avoir un retour.

On pourrait détourner l'accroche publicitaire du film Alien :
\&quot;Sur Powershell-Scripting.com vous pouvez crier, vous n'êtes pas seul dans les runspaces.\&quot; :laugh:

Tutoriels PowerShell

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

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