none
Accès refusé au dossier RRS feed

  • Question

  • Bonjour,

    Actuellement j'utilise un script qui me permet d’accéder aux partages, malheureusement il m'indique qu'il n'a pas accès au dossier. Lorsque je l'exécute il m'indique " l'accès au chemin C:\ est refusé".

    Install-Module NTFSSecurity 
    Get-NTFSAccess -Path "C:\Windows\CSC" | Out-GridView
    $dossier = "C:\"
    $Niveau = 3
    $resultat = @()
    $SubFolders = (Get-ChildItem -path $dossier -recurse -Directory -Depth $($niveau-1)).FullName
    
    foreach ($subfolder in $SubFolders) {
        $FolderSize = Get-ChildItem -path $SubFolder -Recurse -File | Measure-Object -property length -sum
        $FolderNumberOfFile = (Get-ChildItem -path $SubFolder -Recurse -File).count
        $EspaceDisque = get-wmiobject win32_logicaldisk | where {$_.drivetype -eq 3 -and $_.DeviceID -eq (Split-Path $dossier -Qualifier)} | tee-object -variable disques | 
            select-object @{e={$_.systemname};n="Système"},
                @{e={$_.name};n="Disque"},
                @{e={[math]::round($_.freespace/1GB,1)};n="Disponible (Go)"},
                @{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n="% restant"}
    
        $resultat += New-Object -TypeName PSObject -Property @{
            Partage = $subfolder 
            NbDeFichier = $FolderNumberOfFile
            VolumeMo = $foldersize.sum / 1mb
            FreeSpaceGO = $EspaceDisque.'Disponible (Go)'
            }
       }
    
    $resultat | Sort-Object -Property Partage | select-object Partage, NbDeFichier, VolumeMo, FreeSpaceGO | 
        Export-Csv exemple.csv -Delimiter ";" -NoTypeInformation
    Je vous remercie d'avance pour votre aide.


    gabriel


    • Modifié Gabriel_906 lundi 29 octobre 2018 14:26 confidentiel
    mercredi 17 octobre 2018 08:48

Réponses

  • Avez-vous bien lancé le script en mode "runas administrator"?

    Et avez-vous essayé d'ouvrir  le CSV généré à l'aide de notepad et non excel?

    • Marqué comme réponse Gabriel_906 lundi 29 octobre 2018 13:16
    mercredi 17 octobre 2018 15:00
  • salut Gabriel_906

    peut tu nous donner le message d'erreur en entier stp

    si l'erreur ce trouve sur le get-ntfsaccess, tu te retrouve bloquer par les autorisations des dossiers systèmes de Windows

    et tu le sera aussi sur les dossiers des autres comptes utilisateurs dans le reste du script ! 

    comme dis Sébastien, il faut que tu fasse une élévation administrateur pour ne plus avoir ce problème

    • Marqué comme réponse Gabriel_906 lundi 29 octobre 2018 13:16
    jeudi 18 octobre 2018 13:37
  • En interface graphique vous pouvez double cliquer sur le répertoire et il vous affichera probablement un prompt avec UAC (présence d'un bouclier) qui vous demandera continuer ou annuler. Si vous cliquer sur continuer, une entrée sera créee.

    Si vous n'avez pas l'accés en interface graphique, je ne sais pas comment faire en powershell.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    • Marqué comme réponse Gabriel_906 lundi 29 octobre 2018 15:17
    lundi 29 octobre 2018 15:00
  • salut Gabriel_906

    toutes les explications sont sur ce blog  en particulier le paragraphe "Using enabled privilèges" en fin article.

    voici un script qui reprend les explications sur l'Appropriation de dossier, en corrigent le nom des cmdlets qui ont évolué avec les version du module NTFSSecurity :

    $user = "BUILTIN\Administrateurs"
    Get-ChildItem -path $dossier -Directory | Get-NTFSInheritance | Where-Object { -not $_.AccessInheritanceEnabled } | foreach {
        Write-Host "Appropriation du dossier $($_.FullName)"
        Set-NTFSOwner -path $_.FullName -Account $user
        Enable-NTFSAccessInheritance -Path $_.FullName 
        }

    et ci-dessous son intégrations à ton script :

    import-Module NTFSSecurity 
    
    $user = "BUILTIN\Administrateurs"
    $dossier = "C:\"
    $Niveau = 3
    $resultat = @()
    $SubFolders = (Get-ChildItem -path $dossier -recurse -Directory -Depth $($niveau-1)).FullName
    
    foreach ($subfolder in $SubFolders) {
        Write-Host "dossier : $subfolder"
        Get-ChildItem -path $subfolder -Recurse -Directory | Get-NTFSInheritance | Where-Object { -not $_.AccessInheritanceEnabled } | foreach {
            Write-Verbose "Appropriation du dossier $($_.FullName)"
            Set-NTFSOwner -path $_.FullName -Account $user
            Enable-NTFSAccessInheritance -Path $_.FullName 
            }
        $FolderSize = Get-ChildItem -path $SubFolder -Recurse -File | Measure-Object -property length -sum
        $FolderNumberOfFile = (Get-ChildItem -path $SubFolder -Recurse -File).count
        $EspaceDisque = get-wmiobject win32_logicaldisk | where {$_.drivetype -eq 3 -and $_.DeviceID -eq (Split-Path $dossier -Qualifier)} | tee-object -variable disques | 
            select-object @{e={$_.systemname};n="Système"},
                @{e={$_.name};n="Disque"},
                @{e={[math]::round($_.freespace/1GB,1)};n="Disponible (Go)"},
                @{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n="% restant"}
    
        $resultat += New-Object -TypeName PSObject -Property @{
            Partage = $subfolder 
            NbDeFichier = $FolderNumberOfFile
            VolumeMo = $foldersize.sum / 1mb
            FreeSpaceGO = $EspaceDisque.'Disponible (Go)'
            }
       }
    
    $resultat | Sort-Object -Property Partage | select-object Partage, NbDeFichier, VolumeMo, FreeSpaceGO | 
        Export-Csv piservices.csv -Delimiter ";" -NoTypeInformation
    évidemment à exécuter en élévation administrateur

     






    • Proposé comme réponse 6ratgus lundi 29 octobre 2018 16:22
    • Non proposé comme réponse 6ratgus lundi 29 octobre 2018 16:24
    • Marqué comme réponse Gabriel_906 mardi 30 octobre 2018 09:31
    • Modifié 6ratgus mardi 30 octobre 2018 14:18
    lundi 29 octobre 2018 15:18
  • Il vous faut exécuter le programme powershell avec clic droit exécuter en tant qu'administrateur.

    Ensuite vous allez dans le répertoire où le script est présent et vous l'exécuter depuis la fenêtre powershell précédement ouverte.

    On n'exécute pas un script powershell en faisant clic droit exécuter (tout comme un cmd en théorie...).


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    • Marqué comme réponse Gabriel_906 mercredi 31 octobre 2018 13:05
    mardi 30 octobre 2018 12:26
  • un petit tuto sur la méthode pour l'élévation administrateur 

    tu peut aussi lancer de la même façon le PowerShell ISE qui te facilitera le débogage de ton script

    la doc de Microsoft sur ISE

    • Marqué comme réponse Gabriel_906 mercredi 31 octobre 2018 13:05
    mardi 30 octobre 2018 13:29
  • correctif du script :

    $user = "BUILTIN\Administrateurs"
    $dossier = "C:\"
    $Niveau = 1
    $resultat = @()
    $SubFolders = (Get-ChildItem -path $dossier -recurse -Directory -Depth $($niveau-1)).FullName
    
    foreach ($subfolder in $SubFolders) {
        Write-Host "dossier : $subfolder"
        Get-ChildItem -path $subfolder -Recurse -Directory | Get-NTFSInheritance | Where-Object { -not $_.AccessInheritanceEnabled } | foreach {
            Write-Verbose "Appropriation du dossier $($_.FullName)"
            Set-NTFSOwner -path $_.FullName -Account $user
            Enable-NTFSAccessInheritance -Path $_.FullName 
            }
        $FolderSize = Get-ChildItem -path $SubFolder -Recurse -File | Measure-Object -property length -sum
        $FolderNumberOfFile = (Get-ChildItem -path $SubFolder -Recurse -File).count
        $EspaceDisque = get-wmiobject win32_logicaldisk | where {$_.drivetype -eq 3 -and $_.DeviceID -eq (Split-Path $dossier -Qualifier)} | 
            tee-object -variable disques | select-object @{e={$_.systemname};n="Système"},
                @{e={$_.name};n="Disque"},
                @{e={[math]::round($_.freespace/1GB,1)};n="Disponible (Go)"},
                @{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n="% restant"}
    
        $resultat += New-Object -TypeName PSObject -Property @{
            Partage = $subfolder 
            NbDeFichier = $FolderNumberOfFile
            VolumeMo = $foldersize.sum / 1mb
            FreeSpaceGO = $EspaceDisque.'Disponible (Go)'
            }
        }
    
    $resultat | Sort-Object -Property Partage | select-object Partage, NbDeFichier, VolumeMo, FreeSpaceGO | 
        Export-Csv piservices.csv -Delimiter ";" -NoTypeInformation
    
    

    • Marqué comme réponse Gabriel_906 mercredi 31 octobre 2018 13:20
    mardi 30 octobre 2018 14:06

Toutes les réponses

  • Bonjour

    Je pense que c'est à cause du \ juste avant les " lors de la déclaration de la variable $dossier

    Supprimez-le et cela devrait fonctionner


    mercredi 17 octobre 2018 09:35
  • Bonjour,

    Malheureusement lorsque je l'exporte en csv rien ne s'affiche.


    gabriel

    mercredi 17 octobre 2018 10:05
  • Avez-vous bien lancé le script en mode "runas administrator"?

    Et avez-vous essayé d'ouvrir  le CSV généré à l'aide de notepad et non excel?

    • Marqué comme réponse Gabriel_906 lundi 29 octobre 2018 13:16
    mercredi 17 octobre 2018 15:00
  • salut Gabriel_906

    peut tu nous donner le message d'erreur en entier stp

    si l'erreur ce trouve sur le get-ntfsaccess, tu te retrouve bloquer par les autorisations des dossiers systèmes de Windows

    et tu le sera aussi sur les dossiers des autres comptes utilisateurs dans le reste du script ! 

    comme dis Sébastien, il faut que tu fasse une élévation administrateur pour ne plus avoir ce problème

    • Marqué comme réponse Gabriel_906 lundi 29 octobre 2018 13:16
    jeudi 18 octobre 2018 13:37
  • Bonjour,

    Monsieur Sébastien Cullerier,

    Je vous remercie pour le temps que vous m'avez consacré je vais faire ce que vous m'avez demandé.

    Merci


    gabriel

    lundi 29 octobre 2018 13:17
  • Bonjour,

    Monsieur 6ratgus,

    Je vous remercie pour le temps que vous m'avez consacré je vais faire ce que vous m'avez demandé.

    Merci


    gabriel

    lundi 29 octobre 2018 13:18
  • Bonjour,

    Comme je suis dans un compte local en tant qu'administrateur, lorsque j'exécute le script il m'indique une erreur suivant :

    Get-ChildItem : l'accès au chemin d'accès 'C:\Windows\CSC' est refusé

    PermissionDenied UnauthorizedAccessException

    Merci


    gabriel

    lundi 29 octobre 2018 13:43
  • Bonjour,

    Comme je suis dans un compte local en tant qu'administrateur, lorsque j'exécute le script il m'indique une erreur suivant :

    Get-ChildItem : l'accès au chemin d'accès 'C:\Windows\CSC' est refusé

    PermissionDenied UnauthorizedAccessException

    Merci


    gabriel

    lundi 29 octobre 2018 13:43
  • Il y a donc bien un problème au niveau des sécurité NTFS à gérer en premier...


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    lundi 29 octobre 2018 13:45
  • Bonjour Matteu31400,

    Je vous remercie pour le temps que vous m'avez consacré, il n'y a pas une commande permettant de forcer

    (-recurse -force)

    afin d'accéder au dossier .

    Merci


    gabriel

    lundi 29 octobre 2018 14:44
  • En interface graphique vous pouvez double cliquer sur le répertoire et il vous affichera probablement un prompt avec UAC (présence d'un bouclier) qui vous demandera continuer ou annuler. Si vous cliquer sur continuer, une entrée sera créee.

    Si vous n'avez pas l'accés en interface graphique, je ne sais pas comment faire en powershell.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    • Marqué comme réponse Gabriel_906 lundi 29 octobre 2018 15:17
    lundi 29 octobre 2018 15:00
  • salut Gabriel_906

    toutes les explications sont sur ce blog  en particulier le paragraphe "Using enabled privilèges" en fin article.

    voici un script qui reprend les explications sur l'Appropriation de dossier, en corrigent le nom des cmdlets qui ont évolué avec les version du module NTFSSecurity :

    $user = "BUILTIN\Administrateurs"
    Get-ChildItem -path $dossier -Directory | Get-NTFSInheritance | Where-Object { -not $_.AccessInheritanceEnabled } | foreach {
        Write-Host "Appropriation du dossier $($_.FullName)"
        Set-NTFSOwner -path $_.FullName -Account $user
        Enable-NTFSAccessInheritance -Path $_.FullName 
        }

    et ci-dessous son intégrations à ton script :

    import-Module NTFSSecurity 
    
    $user = "BUILTIN\Administrateurs"
    $dossier = "C:\"
    $Niveau = 3
    $resultat = @()
    $SubFolders = (Get-ChildItem -path $dossier -recurse -Directory -Depth $($niveau-1)).FullName
    
    foreach ($subfolder in $SubFolders) {
        Write-Host "dossier : $subfolder"
        Get-ChildItem -path $subfolder -Recurse -Directory | Get-NTFSInheritance | Where-Object { -not $_.AccessInheritanceEnabled } | foreach {
            Write-Verbose "Appropriation du dossier $($_.FullName)"
            Set-NTFSOwner -path $_.FullName -Account $user
            Enable-NTFSAccessInheritance -Path $_.FullName 
            }
        $FolderSize = Get-ChildItem -path $SubFolder -Recurse -File | Measure-Object -property length -sum
        $FolderNumberOfFile = (Get-ChildItem -path $SubFolder -Recurse -File).count
        $EspaceDisque = get-wmiobject win32_logicaldisk | where {$_.drivetype -eq 3 -and $_.DeviceID -eq (Split-Path $dossier -Qualifier)} | tee-object -variable disques | 
            select-object @{e={$_.systemname};n="Système"},
                @{e={$_.name};n="Disque"},
                @{e={[math]::round($_.freespace/1GB,1)};n="Disponible (Go)"},
                @{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n="% restant"}
    
        $resultat += New-Object -TypeName PSObject -Property @{
            Partage = $subfolder 
            NbDeFichier = $FolderNumberOfFile
            VolumeMo = $foldersize.sum / 1mb
            FreeSpaceGO = $EspaceDisque.'Disponible (Go)'
            }
       }
    
    $resultat | Sort-Object -Property Partage | select-object Partage, NbDeFichier, VolumeMo, FreeSpaceGO | 
        Export-Csv piservices.csv -Delimiter ";" -NoTypeInformation
    évidemment à exécuter en élévation administrateur

     






    • Proposé comme réponse 6ratgus lundi 29 octobre 2018 16:22
    • Non proposé comme réponse 6ratgus lundi 29 octobre 2018 16:24
    • Marqué comme réponse Gabriel_906 mardi 30 octobre 2018 09:31
    • Modifié 6ratgus mardi 30 octobre 2018 14:18
    lundi 29 octobre 2018 15:18
  • Bonjour,

    Je suis sur windows 10 avec un compte local en tant qu'administrateur et je n'ai toujours pas accès.

    La version de mon powershell est 5.1.17134.228

    Merci


    gabriel

    mardi 30 octobre 2018 09:46
  • Je suis sur windows 10 avec un compte local en tant qu'administrateur et je n'ai toujours pas accès.

    quand tu administrateur a tu lancer PowerShell en faisant clique droit et "exécuter en tant qu'administrateur"

    si c'est pas le cas tu aura toujours le problème !

    mardi 30 octobre 2018 11:16
  • Bonjour,

    Lorsque je fais clique droit sur le script il me le propose pas "exécuter en tant qu'administrateur" juste exécuter avec powershell.

    Merci


    gabriel

    mardi 30 octobre 2018 12:20
  • Il vous faut exécuter le programme powershell avec clic droit exécuter en tant qu'administrateur.

    Ensuite vous allez dans le répertoire où le script est présent et vous l'exécuter depuis la fenêtre powershell précédement ouverte.

    On n'exécute pas un script powershell en faisant clic droit exécuter (tout comme un cmd en théorie...).


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    • Marqué comme réponse Gabriel_906 mercredi 31 octobre 2018 13:05
    mardi 30 octobre 2018 12:26
  • un petit tuto sur la méthode pour l'élévation administrateur 

    tu peut aussi lancer de la même façon le PowerShell ISE qui te facilitera le débogage de ton script

    la doc de Microsoft sur ISE

    • Marqué comme réponse Gabriel_906 mercredi 31 octobre 2018 13:05
    mardi 30 octobre 2018 13:29
  • correctif du script :

    $user = "BUILTIN\Administrateurs"
    $dossier = "C:\"
    $Niveau = 1
    $resultat = @()
    $SubFolders = (Get-ChildItem -path $dossier -recurse -Directory -Depth $($niveau-1)).FullName
    
    foreach ($subfolder in $SubFolders) {
        Write-Host "dossier : $subfolder"
        Get-ChildItem -path $subfolder -Recurse -Directory | Get-NTFSInheritance | Where-Object { -not $_.AccessInheritanceEnabled } | foreach {
            Write-Verbose "Appropriation du dossier $($_.FullName)"
            Set-NTFSOwner -path $_.FullName -Account $user
            Enable-NTFSAccessInheritance -Path $_.FullName 
            }
        $FolderSize = Get-ChildItem -path $SubFolder -Recurse -File | Measure-Object -property length -sum
        $FolderNumberOfFile = (Get-ChildItem -path $SubFolder -Recurse -File).count
        $EspaceDisque = get-wmiobject win32_logicaldisk | where {$_.drivetype -eq 3 -and $_.DeviceID -eq (Split-Path $dossier -Qualifier)} | 
            tee-object -variable disques | select-object @{e={$_.systemname};n="Système"},
                @{e={$_.name};n="Disque"},
                @{e={[math]::round($_.freespace/1GB,1)};n="Disponible (Go)"},
                @{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n="% restant"}
    
        $resultat += New-Object -TypeName PSObject -Property @{
            Partage = $subfolder 
            NbDeFichier = $FolderNumberOfFile
            VolumeMo = $foldersize.sum / 1mb
            FreeSpaceGO = $EspaceDisque.'Disponible (Go)'
            }
        }
    
    $resultat | Sort-Object -Property Partage | select-object Partage, NbDeFichier, VolumeMo, FreeSpaceGO | 
        Export-Csv piservices.csv -Delimiter ";" -NoTypeInformation
    
    

    • Marqué comme réponse Gabriel_906 mercredi 31 octobre 2018 13:20
    mardi 30 octobre 2018 14:06
  • Bonjour,

    Je vous remercie


    gabriel

    mercredi 31 octobre 2018 13:05
  • Bonjour,

    Je vous remercie.


    gabriel

    mercredi 31 octobre 2018 13:07