2015-08-10 1 views
1

Je suis en train de supprimer des fichiers temporaires ASP .NET de créer un script PowerShell. Jusqu'à présent, j'ai réussi à trouver sous C:\Windows\Microsoft .NET\Temporary .NET Files fichiers (pas de dossiers) plus de 60 jours et les supprimer. Mais mon problème maintenant est que sous C:\Windows\Microsoft .NET\Temporary .NET Files il y a un dossier nommé root. Ce dossier a seulement un sous-dossier. Ce que je veux, c'estCompter les sous-dossiers d'un dossier

  • Compter combien de sous-dossiers existent sous le dossier racine.
  • S'il n'y a qu'un seul dossier, ne faites rien.
  • S'il y en a plusieurs, quitte le dossier le plus récent et supprime les autres.

Comment cela pourrait-il être fait avec PowerShell?

Répondre

0

Recurse dans ce dossier racine, filtrer les résultats pour les répertoires (éléments pour lesquels la propriété PSIsContainer est $true), et compter les résultats:

Get-ChildItem 'C:\path\to\root' -Recurse | 
    ? { $_.PSIsContainer } | 
    Measure-Object | 
    select -Expand Count 

Si vous avez v3 PowerShell ou plus récent, vous pouvez simplifier que par appelant Get-ChildItem avec le paramètre -Directory:

Get-ChildItem 'C:\path\to\root' -Recurse -Directory | 
    Measure-Object | 
    select -Expand Count 
+0

J'ai couru le script, mais 'Get-ChildItem: Un paramètre de position ne peut pas être trouvé que ca cepts argument '$ _. PSIsContainer'. C: \ Users \ Christos \ Documents \ cleanup.ps1: 1 Caractère: 15 + Get-ChildItem <<<< « C: \ Windows \ Microsoft.NET \ Framework * \ * v \ Temporary ASP.NET Files \ racine "-R? {$ _. PSIsContainer} | Measure-Object | sélectionnez -Développer Count + CategoryInfo: InvalidArgument: (:) [Get-ChildItem], ParameterBindingException + FullyQualifiedErrorId: PositionalParameterNotFound, Microsoft.PowerShell.Commands.GetChildItemCommand' – user20092013

+0

Désolé, j'avais tapé incorrectement la commande. Igonre le commentaire ci-dessus. ça a marché. Maintenant, mon problème est que sous le dossier C: \ Windows \ Microsoft .NET \ Temporary .NET, je 7 sous-dossiers que j'ai 7 sites sur mon IIS. Comment puis-je syntaxe le script (avec une aide en boucle) pour chaque dossier et si les comptes 0 ou 1 ne font rien, sinon supprimer des dossiers. Par exemple, j'ai C: \ Windows \ Microsoft .NET \ Temporaire .NET \ racine C: \ Windows \ Microsoft .NET \ Temporaire .NET \ site1 \ site2 C: \ Windows \ Microsoft .NET \ Temporary .NET \ site3 et compter pour la racine, site1, site2 et dossiers site3. – user20092013

+0

Veuillez ne pas déplacer la cible. Si vous avez une nouvelle question: postez une nouvelle question. –