none
Supprimer les quotas du FSRM via Powershell RRS feed

  • Question

  • Bonjour,

    Windows SBS 2011 créé un quota disque pour chaque utilisateur lors de leur création.

    Ce comportement ne me plait pas vraiment et je cherche un moyen via Powershell (pour l'intégrer dans un script existant) de les supprimer tous.

    J'ai bien trouvé les objets COM ($fqtm = New-Object -com Fsrm.FsrmQuotaManager...) mais pas comment ils peuvent m'aider dans ma quête :-)

    J'ai également trouvé que c'est super simple dans Windows Server 2012 mais là je suis donc sur du 2008R2...

    Enfin, j'ai trouvé que "dirquota" possède une fonctionnalité de listing et de suppression mais pour l'utiliser je dois lui fournir le le chemin d'accès. Du coup avant de faire un tri énorme sur la chaine String qu'il me retourne lors du listing (et qui ne fonctionnera pas dans une autre langue système), je me suis dit que peut être il y aurait plus simple...

    Vous pouvez penser que ce choix est loufoque, aussi seule m'intéresse le moyen de le faire via Powershell.

    Bien évidemment, je prend même les pistes et pourrai les creuser, disposant d'un serveur de test sous la main.

    Cordialement,

    mardi 19 mars 2013 11:18

Réponses

  • Bonjour,

    On peut le faire en Powershell :

    $qm = New-Object -com Fsrm.FsrmQuotaManager
    $Quota=$qm.GetQuota(PATH)
    $Quota.Delete()
    $Quota.Commit()
    Cdt,
    • Marqué comme réponse Letoine mardi 19 mars 2013 15:27
    mardi 19 mars 2013 14:27

Toutes les réponses

  • Bonjour,

    Vous pourriez chercher du coté de dirquota.exe

    dirquota.exe Quota Delete /Remote:NOM_SRV /Path:CHEMIN

    exemple: dirquota.exe Quota Delete /Remote:SRV-DFS.domain.local /Path:C:\toto

    Il ne reste qu'à remplacer le nom du serveur ('/remote' n'est pas nécessaire si exécuter sur le serveur DFS en lui-même) et le chemin du dossier par une variable pour l'intégration dans votre script déjà existant.  

    A vérifier mais je crois que l'exemple ci-dessous permet de l'appliquer à tous les sous-dossiers de 'C:\dossier' 

    dirquota q d /Path:C:\dossier\* 

    Cdt,


    Jérémy DHUIT



    mardi 19 mars 2013 14:07
  • Bonjour,

    On peut le faire en Powershell :

    $qm = New-Object -com Fsrm.FsrmQuotaManager
    $Quota=$qm.GetQuota(PATH)
    $Quota.Delete()
    $Quota.Commit()
    Cdt,
    • Marqué comme réponse Letoine mardi 19 mars 2013 15:27
    mardi 19 mars 2013 14:27
  • Bonjour,

    Super, merci votre intérêt !

    La solution de Grégory me semble s'approcher de ce que je veux car elle n'utilise que Powershell.

    Grâce à vous, j'ai trouvé (avec quelque recherches en plus j'ai trouvé EnumQuotas()) et hop, tous mes quotas se sont envolés !

    #Suppression des quota de disque
    $qm = New-Object -com Fsrm.FsrmQuotaManager
    $ListeQuota = $qm.EnumQuotas()
    foreach ($q in $ListeQuota) {
     $qpath = $q.path
     $Quota = $qm.GetQuota($qpath)
     $Quota.Delete()
     $Quota.Commit()
    }
    Cordialement,

    • Modifié Letoine mardi 19 mars 2013 15:29 J'ai trouvé !
    mardi 19 mars 2013 14:36
  • Vous pouvez utiliser Get-ChildItem

    $TousLesQuotaPath = Get-ChildItem -Path C:\dossier | select FullName
    
    foreach ($QuotaPath in $TousLesQuotaPath) {
         $qm = New-Object -com Fsrm.FsrmQuotaManager
         $Quota = $qm.GetQuota($QuotaPath)
         $Quota.Delete()
         $Quota.Commit()
    }
    Cdt,


    Jérémy DHUIT

    mardi 19 mars 2013 15:33
  • Voulez-vous supprimer tous les quotas positionnés sur une arborescence ou les supprimer plus finement en fonction du Template ?

    Pour supprimer tous les quotas positionnés sur une arborescence (peu importe le Template) :

    gci PATH |%{
    If($qm.IsAffectedByQuota($_.FullName)){
    $Quota=$qm.GetQuota($_.FullName)
    $Quota.Delete()
    $Quota.Commit()
    }
    }
    C'est un peu "violent" comme méthode donc à utiliser avec précaution.

    Cdt,

    mardi 19 mars 2013 15:33
  • Jérémy : Merci de l'idée je la garde dès lors que j'interviens sur un dossier que mon service n'a pas paramétré.

    Grégory : Le code que j'ai publié et modifié dans mon précédent post est quelque peu "violent" mais fonctionne et m'a bien supprimé tous les quotas de disque existant sur mon serveur de test. Petite question subsidiaire, gci PATH indique que le script reprend une variable passée en paramètre ou ... ?

    Pour rappel, je peux me permettre d'être super "violent" car ce script intervient à la fin de ma configuration de SBS2011 qui est un peu trop restrictif pour ma typologie de client et le matériel que je leur met en place. Aussi, les quotas de disques de SBS2011 sont par défaut super restrictifs donc je les supprime complètement sans ménagement et en créérai de nouveau plus tard au besoin.

    mardi 19 mars 2013 15:41