Получение дополнительных сведений о файловых дескрипторах файлового ресурса Azure - Get-AzStorageFileHandle

У меня есть дескрипторы открытых файлов из общей папки учетной записи хранилища Azure, но этой информации, похоже, очень мало, чтобы понять, какой процесс запустил его или в каком файле находится этот дескриптор файла.

Получение дескрипторов файлов https://docs.microsoft.com/en-us/powershell/module/az.storage/get-azstoragefilehandle?view=azps-2.7.0

https://github.com/Azure/azure-powershell/blob/master/src/Storage/Storage.Management/help/Get-AzStorageFileHandle.md#example-1-list-all-file-handles-on-a-file-share-recursively-and-sort-by-clientip-and-opentime

Как получить дополнительную информацию, используя handleid или sessionid из этого списка?

Я много искал в лазурных документах, а также в Интернете, но информации об этом нет.

Пример сценария и ответа:

PS C:\>Get-AzStorageFileHandle -ShareName "mysharename" -Recursive | Sort-Object ClientIP,OpenTime 

HandleId    Path                  ClientIp       ClientPort OpenTime             LastReconnectTime FileId               ParentId             SessionId          
--------    ----                  --------       ---------- --------             ----------------- ------               --------             ---------          
28506980357                       104.46.105.229 49805      2019-07-29 08:37:36Z                   0                    0                    9297571480349046273
28506980537 dir1                  104.46.105.229 49805      2019-07-30 09:28:48Z                   10376363910205800448 0                    9297571480349046273

person Pritesh Tayade    schedule 01.10.2019    source источник
comment
Какую еще информацию вы хотите получить?   -  person Gaurav Mantri    schedule 01.10.2019
comment
@GauravMantri Я хочу понять, какой процесс запустил его или в каком файле находится этот дескриптор файла.   -  person Pritesh Tayade    schedule 02.10.2019
comment
Пока я прошел через support.microsoft.com/en-us/help/4022301/, в этой статье говорится об использовании Handle.exe для проверки активных дескрипторов, открытых для общего файлового ресурса Azure. (docs.microsoft.com/en-us/sysinternals/downloads/handle) Но я все еще не понимаю, как использовать проводник процессов (handle.exe) для просмотра дескрипторов файлов из общей папки azure.   -  person Pritesh Tayade    schedule 02.10.2019
comment
эта статья docs.microsoft.com/en-us/azure/storage/files/ предлагает уменьшить количество одновременных открытых дескрипторов, закрыв некоторые дескрипторы, а затем повторите попытку. Но перед тем, как закрыть дескрипторы файлов, я хочу понять, какой процесс обрабатывает эти дескрипторы файлов или в каком файле или каталоге находится этот дескриптор файла.   -  person Pritesh Tayade    schedule 02.10.2019


Ответы (1)


После быстрого исследования и локального тестирования я считаю, что "Путь", возвращаемый командой, - это путь к файлу или каталогу, который вы ищете. Дескриптор файла предназначен не только для файла, но и для папки. Уловка здесь в том, что дескриптор файла не всегда удерживается. Фактически, большинство приложений освобождают дескриптор файла, как только они открывают файл, например, блокнот. Поэтому, когда вы запускаете команду, большую часть времени вы могли видеть только дескриптор папки, а не файлов.

Чтобы убедиться в этом, я протестировал следующий код:

        static void Main(string[] args)
        {
            string path = args[0];
            var file=File.Open(path, FileMode.OpenOrCreate);
            Console.WriteLine("Press any key to release the handle");
            Console.ReadKey();
            file.Close();
        }

При исключении File.Open процесс удерживает дескриптор, затем я запускаю Get-AzStorageFileHandle. Отображается дескриптор для "test.csv":

введите описание изображения здесь

Но если открыть файл с помощью блокнота, отображается только дескриптор папки.

В любом случае, вы можете использовать возвращенный «путь», чтобы определить, какой файл находится у других.

Кстати, handle.exe не применяется для облачной среды. Вы не должны его использовать.

person Tom Luo    schedule 22.10.2019