Question [Résolu] Psgetsid

Plus d'informations
il y a 16 ans 3 jours #6396 par SiSMik
[Résolu] Psgetsid a été créé par SiSMik
Bonjour,

ça doit être un truc tout bête, mais j'aimerais afficher le SID d'une machine en local. J'ai bien trouvé quelques tutoriaux qui expliquent cela en PS pur et dur, mais je ne peux pas me permettre de lancer mon script en tâche planifiée pour avoir accès aux registres bloqués.

Je me suis donc dis que de lancer psgetsid.exe, stocker le résultat dans un fichier tampon et le lire. Grand malheur sur moi, j'arrive même pas à echo des données dans un pauvre fichier..
Le batch était mon ami, l'apprentissage de powershell est dur :s

J'ai testé ça:
[code:1]$p = [diagnostics.process]::«»Start(\"psgetsid.exe >> E:\Scripts\temp.txt\"«»);
$p.WaitForExit();[/code:1]

Merci d'avance de votre aide ^^<br><br>Message édité par: Arnaud, à: 22/03/10 17:53

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

Plus d'informations
il y a 16 ans 3 jours #6397 par crouzille
Réponse de crouzille sur le sujet Re:Psgetsid
Bonjour à toi,

Tout comme toi j'ai garder de mauvaise habitude de batch:lol: mais tu vas t'y faire t'inquiete pas;)

Essaye ceci:
[code:1]
$p = [diagnostics.process]::«»Start(\&quot;psgetsid.exe\&quot;«») | out-file C:\test.txt[/code:1]<br><br>Message édité par: Arnaud, à: 19/03/10 08:48

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

Plus d'informations
il y a 16 ans 3 jours #6398 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Psgetsid
Salut,
une autre solution :
[code:1]psgetsid.exe &gt; E:\Scripts\temp.txt[/code:1]
Ici pas besoin de faire un WaitForExit.
benduru écrit:

Le batch était mon ami, l'apprentissage de powershell est dur :s

Pas moyen d'y couper, à moins d'essayer un transfert de connaisssance par imposition des mains :P
Il faut être patient et tenace.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 2 jours #6400 par SiSMik
Réponse de SiSMik sur le sujet Re:Psgetsid
Nikel, merci pour votre aide.. du coup je reviens avec une nouvelle question :blush:

[code:1]$s = Select-String -path E:\Scripts\temp.txt -pattern \&quot;S-1-5\&quot; -list -simplematch[/code:1]
retourne
[code:1]E:\Scripts\temp.txt:3:«»S-1-5-21-2413404195-1007888578-3295543584[/code:1]

Donc je me suis dit on va virer les 11 premiers caractères qui feront toujours la même taille, mais si je fais ça
[code:1]Write-Host $s.remove(0, 11)[/code:1]
je reçois une magnifique erreur comme celle ci
[code:1]L'appel de la méthode a échoué parce que [System.Object[]] ne contient pas de méthode nommée « remove ».
Au niveau de E:\Scripts\untitled.ps1 : 291 Caractère : 21
+ Write-Host $s.remove &lt;&lt;&lt;&lt; (0, 11)
+ CategoryInfo : InvalidOperation: (remove:«»String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
[/code:1]
A mon avis, c'est quelque chose du genre la variable qui n'est pas déclaré dans un bon type (ou pas..)

a+

EDIT
[code:1][String]$s = Select-String -path E:\Scripts\temp.txt -pattern \&quot;S-1-5\&quot; -list -simplematch[/code:1]
En forçant la variable sur le type String, ça fonctionne correctement maintenant.
[code:1]<br><br>Message édité par: benduru, à: 19/03/10 14:22

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

Plus d'informations
il y a 16 ans 2 jours #6402 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Psgetsid
benduru écrit:

A mon avis, c'est quelque chose du genre la variable qui n'est pas déclaré dans un bon type (ou pas..)

PowerShell est un langage dynamique, donc non typé.
C'est toi qui considére la variable comme étant du type que tu souhaites, ou tout du moins le traitement que tu lui appliques comme étant approprié.
benduru écrit:

EDIT
En forçant la variable sur le type String, ça fonctionne correctement maintenant.

Préciser est plus approprié que Forcer, désormais tu précises ton intention, mais un cast ne sera pas tjr suffisant ;)
L'autre question à se poser est pourquoi cela fonctionne en précisant une interprétation plutot qu'une autre ?

D'exécuter $mavariable.GetType() est nécessaire la pluspart du temps, cela fait à peu prés 4 ans que j'utilise PS et c'est LA commande que j'utilise le plus souvent.
C'est elle qui nous informe ce que PS manipule vraiment, bien que la pluspart du temps nous n'avons pas à nous en soucier.

Rappelez-vous : PowerShell est \&quot;avide d'objets\&quot;, pas de précisions :P

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 11 mois #6412 par SiSMik
Réponse de SiSMik sur le sujet Re:Psgetsid
Merci pour tes commentaires !
Je me rends compte que j'ai du boulot pour au moins maitriser les bases de Powershell

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

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