Я пытаюсь реализовать функцию в powershell, которая может надежно сказать мне, действительно ли каталоги, на которые ссылаются два допустимых пути, одинаковы. Он должен уметь обрабатывать каталоги, на которые ссылаются карты, пути UNC, соединения, возможно, соединение на файловом сервере и т. Д. И т. Д. И т. Д.
Учитывая множество способов обращения к каталогу, кажется, что наиболее надежный способ сделать это - записать пустой файл в каталог, используя одно имя каталога, а затем использовать второй путь, чтобы проверить, можно ли найти временный файл в второй путь. Однако оказывается, что это может быть ненадежно.
У нас есть файловый сервер с каталогом S:\
это разделяется как \\server\share
, На сервере у нас есть каталоги S:\rootDir1
, S:\rootDir1\subDir
, S:\rootDir2
и перекресток S:\rootDir2\subDir => S:\rootDir1\subDir
,
На сервере приложений я сопоставляю M:\ => \\server\share
так что сервер приложений видит M:\rootDir1\subDir
а также M:\rootDir2\subDir
В powershell на сервере приложений я создаю файл в M:\rootDir1\subDir
с помощью
New-Item -ItemType File -Path `M:\rootDir1\subDir\testFile.txt`
Затем мы немедленно выполняем два теста
$l_ret1 = test-path `M:\rootDir1\subDir\testFile.txt`
$l_ret2 = test-path `M:\rootDir2\subDir\testFile.txt`
Возвращенный результат $l_ret1
последовательно $true
пока результат $l_ret2
несовместимо без значительной задержки между созданием тестового файла и его тестированием. Есть ли способ заставить Windows «обновить» или «обновить» информацию о файлах в M:\rootDir2\subDir
? Я понимаю, что это может быть ошибка файлового сервера (файлового сервера окна), но тогда вопрос просто меняется, есть ли способ заставить файловый сервер обновить свою информацию?
источник
Расширение ответа Уоррена: в Powershell можно использовать следующий код powershell:
Обратите внимание, что это по существу реализует функциональность в C #.
источник