Использование POSH на сервере Windows (2012) Я пытаюсь выборочно закрыть любые файлы, которые открыты на некоторых поддиректорах; скажем ничего с E: \ DIR1 \ source *. *.Net file output обрезает длинные пути файла
Структура папки верхнего уровня:
E:\
DIR0
DIR1
source
bob
mike
archive
Week
Weekend
Так это значит, что я хочу, чтобы закрыть соединение с любыми файлами в
E:\DIR1\source\
E:\DIR1\source\bob
E:\DIR1\source\mike
код, который я есть звонки «чистый файл» (нет параметров), чтобы получить список всех открытых подключений и работает с его результатом, чтобы создать массив из семи элементов, который выглядит следующим образом:
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
Затем код разбивает каждую строку на четыре столбца (FileID, Path, User, NumLocks). Наконец, он сравнивает свойство пути каждого элемента из «чистого файла» с набором путей, которые меня интересуют Так в то время как цикл через массив элементов, (псевдо-код):.
foreach ($netFileOutputItem in $netFileOutput) {
if ($netFileOutputItem.Path -in $arrayOfSubDirs) {
net file $netFileOutputItem.FileID /close
}
}
Вот проблема: если путь к файлу слишком длинный, то команда «net file» усекает вывод, вставив «...» в путь к файлу (см. идентификаторы файлов 228, 167, 120). Я не знаю полного расположения идентификаторов файлов 228 или 167: они находятся где-то в DIR1, но находятся ли они в одной из трех интересующих папок или нет?
Итак, есть:
- Любой способ заставить «чистый файл», чтобы получить вверх полный путь
- альтернативной утилиту для «чистого файл», который возвращает полный путь и ID
- POSH для достижения одинакового результата, например идентификатор и полный путь к любому открытому файлу
С # 2 & 3, я также нужен идентификатор файла, так что я могу закрыть соединение с «чистого файла» (если нет альтернативы, что также).
Get-SmbOpenFile - эквивалент powershell. –
Это хороший кандидат на обман: http: // stackoverflow.com/questions/34885837/check-who-has-a-excel-file-open-in-powershell – Matt
@Tav - эта функция была крючком в решении, к которому я пришел - спасибо – NeepNeepNeep