Utilisation de POSH sur un serveur Windows (2012) J'essaie de fermer de manière sélective tous les fichiers ouverts sur certains sous-répertoires; disons n'importe quoi avec E: \ DIR1 \ source *. *.La sortie de fichier Net tronque les longs chemins de fichier
La structure de dossier de niveau supérieur est:
E:\
DIR0
DIR1
source
bob
mike
archive
Week
Weekend
Cela veut donc dire que je veux fermer les connexions à tous les fichiers dans
E:\DIR1\source\
E:\DIR1\source\bob
E:\DIR1\source\mike
Le code je appelle « fichier net » (pas de paramètres) pour obtenir une liste de toutes les connexions ouvertes et travaille avec sa sortie pour créer un tableau de sept éléments qui ressemble à ceci:
194 E:\DIR0\ user1 0
228 E:\DIR1\...\myFile.csv user2 0
227 E:\DIR1\source\files\ user1 0
167 E:\DIR1\... user1 0
181 E:\ user3 0
241 E:\ user1 0
120 E:\DIR3\... user4 0
Le code divise ensuite chaque ligne en quatre colonnes (FileID, Path, User, NumLocks). Enfin, il compare la propriété de chemin de chaque élément de « fichier net » avec la collection de chemins que je suis intéressé par Ainsi, alors une boucle à travers le tableau des éléments, (pseudo-code).
foreach ($netFileOutputItem in $netFileOutput) {
if ($netFileOutputItem.Path -in $arrayOfSubDirs) {
net file $netFileOutputItem.FileID /close
}
}
Voilà le problème: si le chemin du fichier est trop long, la commande "net file" tronque la sortie, en insérant "..." dans le chemin du fichier (voir les ID de fichier 228, 167, 120). Je ne connais pas l'emplacement complet des ID de fichier 228 ou 167: ils se trouvent quelque part dans DIR1, mais sont-ils dans l'un des trois dossiers d'intérêt ou non?
Alors, est-il:
- Une manière de forcer "net file" pour obtenir un chemin complet
- Un utilitaire alternative au "fichier net" qui retourne le chemin complet et ID
- Code POSH pour atteindre la même sortie, par exemple l'ID et le chemin complet à tout fichier ouvert
AveC# 2 & 3, je voudrais aussi besoin de l'ID de fichier afin que je puisse arrêter la connexion avec « fichier net » (sauf quand il y a une alternative à ainsi que).
Get-SmbOpenFile est l'équivalent de PowerShell. –
Ceci est un bon candidat pour un dupe: http: // stackoverflow.com/questions/34885837/vérification-qui-a-un-excel-fichier-open-in-powershell – Matt
@Tav - cette fonction a été le point d'ancrage dans la solution, je suis arrivé à - merci – NeepNeepNeep