Question Conversion VBS Powershell (Resolu)

Plus d'informations
il y a 13 ans 10 mois #502 par Berfini
Alors voila j'essaye de convertir mes anciens scripts VBS en Powershell, mais je rencontre quelques difficultés lors des convertions Get-Object de VBS.

Et meme avec l'aide de microsoft qui propose les fonctions equivalentes, sa ne marche pas.
La fonction refuse ma variable qui est pourtant bien une chaine de caracteres.

Merci a celui ou celle qui prendra le temps de regarder mon probleme.

Exemple de code qui plante :

VBS Initial :

Function getDN(saMAccountName)
Dim nRoot, basedn, objConnection2, objCommand2, objRecordSet2
Set nRoot = GetObject(\"LDAP://rootDSE\")
' genere automatiquement le chemin dc=************, dc=****, dc=***
' ou dc=*********, dc=*****, dc=***
basedn = nRoot.Get(\"defaultNamingContext\")
set nRoot = Nothing
Set objConnection2 = CreateObject(\"ADODB.Connection\")
objConnection2.Open \"Provider=ADsDSOObject;\"
Set objCommand2 = CreateObject(\"ADODB.Command\")
objCommand2.ActiveConnection = objConnection2
objCommand2.CommandText = \"<LDAP://\" & basedn & \">;(saMAccountName=\" & saMAccountName & \");distinguishedname;subtree\"
Set objRecordSet2 = objCommand2.Execute
If objRecordset2.RecordCount = 0 Then
getDN = \"\"
Else
getDN = objRecordSet2(0)
End If
objConnection2.Close
End function


Convertion Powershell :

Function getDN([string] $saMAccountName)
{
[reflection.assembly]::LoadWithPartialName(\"microsoft.visualbasic\")
$nRoot = [microsoft.visualbasic.interaction]::GetObject(\"LDAP://rootDSE\")
$basedn = $nRoot.Get(\"defaultNamingContext\") # probleme
$nRoot = $null
$objConnection2 = new-object -comobject \"ADODB.Connection\"
$objConnection2.Provider = \"ADsDSOObject\"
$objConnection2.Open
$objCommand2 = new-object -comobject \"ADODB.Command\"
$objCommand2.ActiveConnection = $objConnection2
$objCommand2.CommandText = \"<LDAP://\" + $basedn + \">;(saMAccountName=\" + $saMAccountName + \");distinguishedname;subtree\"
$objRecordSet2 = $objCommand2.Execute
if ($objRecordset2.RecordCount -eq 0)
{
return \"\"
}
else
{
return $objRecordSet2
}
$objConnection2.Close
}


Je joint egalement tout mon fichier ps1 car ce probleme se repete plusieurs fois :s

La pièce jointe Fonctions_EspaceUtilisateur.ps1 est absente ou indisponible



Message édité par: Gaby, à: 5/07/07 14:52<br><br>Message édité par: Gaby, à: 16/07/07 13:05

Gaby
Pièces jointes :

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

Plus d'informations
il y a 13 ans 10 mois #507 par Jacques Barathon
L'erreur vient de l'utilisation du GetObject() de [microsoft.visualbasic.interaction]. Tu récupères un objet COM qui n'expose pas les méthodes dont tu as besoin.

L'objet que tu cherches est directement accessible en ADSI:

[code:1]$nRoot = [ADSI]\&quot;LDAP://RootDSE\&quot;
$basedn = $nRoot.Get(\&quot;defaultNamingContext\&quot;«»)[/code:1]

Au passage, tu pourras retirer le chargement de la bibliothèque Microsoft.VisualBasic devenue totalement inutile.

Janel

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

Plus d'informations
il y a 13 ans 10 mois #509 par Berfini
Réponse de Berfini sur le sujet Re:Conversion VBS Powershell
Ok merci janel je test et je te dit si sa marche.

Gaby

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

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