Получение дополнительной информации о дескрипторах общего файлового ресурса Azure - Get-AzStorageFileHandle - PullRequest
0 голосов
/ 01 октября 2019

У меня есть дескрипторы открытого файла из общей папки учетной записи хранилища 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 из этого списка?

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

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

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

1 Ответ

0 голосов
/ 22 октября 2019

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

Чтобы убедиться в этом, я проверил код ниже:

        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" отображается:

enter image description here

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...