Bonjour
Je suis débutant sur powershell et je ne comprend pas ce qui ce passe.
J'ai écris le code ci-dessous que j’exécute en mode débug, la pas d'erreur.
Par contre quand j’exécute normalement mon script j'ai le message d'erreur suivant.
Mon script qui sert à affiché les droits d’accès a partir d'un dossier racine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Échec lors de l’appel de la méthode, car [System.Management.Automation.PSObject] ne contient pas de méthode nommée «*op_Addition*». Au caractère C:\Users\...\Desktop\AccessRights.ps1:66 : 17 + $tabACL+=fAddTab -strDirectory $strFolder -strMemberName $objADO ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation : (op_Addition:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 #Import ActiveDirectory Module if not loaded $Module = Get-Module ActiveDIrectory If ($Module -eq $Null) {Import-Module ActiveDirectory} $DEBUG = 0 #Chemin racine à analyser $strPATH = "D:\DATA" $tabACL=@() #Initialisation du tableau à vide Function fAD_Name(){ Param ([string]$strAccountName) if ($strAccountName.Contains("\")){ #Retourne uniquement le sAMAccountName return [String]$strAccountName = ($strAccountName.Split("\")[-1]).Trim() } Else { return $strAccountName.Trim() } } Function fAddTab(){ Param([String]$strDirectory,[String]$strMemberName,[String]$strMemberOf='',[String]$strFSRights) $Dico=New-Object PSObject $Dico | Add-Member -Name Directory -MemberType NoteProperty -Value $strDirectory $Dico | Add-Member -Name MemberName -MemberType NoteProperty -Value $strMemberName $Dico | Add-Member -Name MemberOf -MemberType NoteProperty -Value $strMemberOf $Dico | Add-Member -Name FileSystemRights -MemberType NoteProperty -Value $strFSRights Return $Dico } Function fAD_AddMembers(){ Param ( [String]$strCNObjectAD, [String]$strFolder, [String]$strFSR, [String]$strSubCNObjectAD='' ) $strCNObjectAD = $strCNObjectAD.Trim() if($DEBUG -eq 1){Write-Host "strCNObjectAD : $strCNObjectAD"} #Récupureation de l'objet Active Directory (User ou Group) $objADObject = Get-ADObject -LDAPFilter "(sAMAccountName=$strCNObjectAD)" -properties Name, ObjectClass, Member if($DEBUG -eq 1){Write-Host '$objADObject.Name :' $objADObject.Name '$objADObject.Class :' $objADObject.ObjectClass} if([String]$objADObject.ObjectClass -like "group"){ #Pour Chaque membre du groupe ForEach ($Member in $objADObject.member){ $objADO = Get-ADObject -LDAPFilter "(distinguishedName=$Member)" -properties cn, ObjectClass #Si dans les membres ont trouve un autre groupe, alors ont rappel la fonction if ($objADO.ObjectClass -like 'group') { fAD_AddMembers -strCNObjectAD $objADO.cn -strFolder $strFolder -strFSR $strFSR -strSubCNObjectAD $strCNObjectAD }Else{ if($DEBUG -eq 1){Write-Host fAddTab -strDirectory $strFolder -strMemberName $objADO.cn -strMemberOf $strCNObjectAD -strFSRights $strFSR} $tabACL+=fAddTab -strDirectory $strFolder -strMemberName $objADO.cn -strMemberOf $strCNObjectAD -strFSRights $strFSR } } }Else{ if($DEBUG -eq 1){Write-Host fAddTab -strDirectory $strFolder -strMemberName $objADObject.Name -strFSRights $strFSR} $tabACL+=fAddTab -strDirectory $strFolder -strMemberName $objADObject.Name -strFSRights $strFSR if($DEBUG -eq 1){$tabACL} } } $liste_repertoire = Get-childitem $strPATH -recurse foreach ($repertoire in $liste_repertoire){ if($repertoire.Attributes -eq "Directory"){ if($DEBUG -eq 1){Write-Host "REPERTOIRE : " $repertoire.FullName} $global_acl = Get-Acl $repertoire.FullName foreach ($droit in $global_acl.Access){ $strIdentification = fAD_Name $droit.IdentityReference if($DEBUG -eq 1){Write-Host "IdentityReference " $droit.IdentityReference} if($DEBUG -eq 1){Write-Host "strIdentification : $strIdentification"} fAD_AddMembers -strCNObjectAD $strIdentification.trim() -strFolder $repertoire.FullName -strFSR $droit.FileSystemRights } } } return $tabACL
Partager