ne contient pas de méthode nommée « op_Addition »
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.
Code:
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 |
Mon script qui sert à affiché les droits d’accès a partir d'un dossier racine.
Code:
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 |