2017-08-18 5 views
1

Ich habe ein Skript, das mir genau sagen wird, wie viele Ordner sich in einem Verzeichnis befinden und welche Unterverzeichnisse darin enthalten sind. Für ein Verzeichnis, mit dem ich arbeite, gibt es jedoch Verknüpfungsordner, die das Skript zum Scheitern zu bringen scheinen.Anzahl der Ordner im Verzeichnis zählen und Tastenkürzel ignorieren

Unten ist die Fehlermeldung, die ich erhalte:

Get-ChildItem : Could not find a part of the path 'C:\Folder\SubFolder\folder1\jpos'. 
At C:\Desktop\Script Files\fileCount.ps1:34 char:10 
+ $items = Get-ChildItem C:\Folder\SubFolder\ -Recurse 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : ReadError: (C:\Folder\SubFolder\folder1\jpos:String) [Get-ChildItem], 
DirectoryNotFoundException 
+ FullyQualifiedErrorId : 
DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand` 

Das Skript für Verzeichnisse ohne Abkürzungen fein läuft, aber es scheint immer zum Scheitern verurteilt, wenn es Verknüpfungen innerhalb des Verzeichnisses.

Unten ist der Code-Schnipsel für diesen Abschnitt:

$items = Get-ChildItem C:\Folder\SubFolder -Recurse 
$termFolder = ($items | Where-Object {$_.PSIsContainer}).count 

Gibt es eine Möglichkeit über Verknüpfungen oder ein besserer Weg zu überspringen zählt ein Ordner zu tun?

+2

Wenn Sie Verknüpfungen sagen meinen Sie Links? [Dies könnte ein Betrogener sein] (https://stackoverflow.com/questions/29763790/how-to-make-get-childitem-not-to-follow-links). Schauen Sie sich auch die Superuser-Frage an, die dort verlinkt ist. – Matt

+0

Es gibt einen '-Directory'-Schalter zu GCI. – TheIncorrigible1

+0

@ TheIncorrigible1 Nicht in früheren PS-Versionen. 'wo {$ _. PSIsContainer}' dient dem selben. – LotPings

Antwort

0

(gci Pfad | {$ _. Erweiterung -ne ".lnk"}). Count

Shortcuts LNK-Erweiterung und gci haben bedeutet Get-Childitem.

0

Genau wie diese verwenden -directory (für Powershell-3 oder +):

$items = Get-ChildItem C:\Folder\SubFolder -Recurse -Directory 
$termFolder = $items.Count