gpt4 book ai didi

Powershell - Azure Data Lake Store 中的递归

转载 作者:行者123 更新时间:2023-12-02 22:39:53 25 4
gpt4 key购买 nike

有人知道如何列出数据湖存储和子目录中目录中的每个文件吗?显然 -recursive 指令不像在正常环境中那样工作

我需要在 Azure Data Lake Store 中运行此脚本(它在我的计算机中正常运行)

$Quarentine = "C:\PSTest\QUARENTINE"

$validate = "C:\PSTest\Files"

get-childitem $validate -rec -af | Where-Object {$_.FullName -notmatch "^C:\\PSTest\\Files\\(.+\\)*(XX.+)\.(.+)$"} |
move-item -destination {"C:\PSTest\QUARENTINE\"+ $_.BaseName +("{0:yyyyMMddHHmmss}" -f (get-date)) + $_.Extension}

我正在使用命令Get-AzureRmDataLakeStoreChildItem,显然不支持-recursive

有人可以帮我吗?

谢谢

最佳答案

这是一种递归方法(警告:它不能很好地扩展,因为它为每个子目录进行 API 调用并且不是并行化的,而且因为它将所有文件存储到内存中)。

function Get-DataLakeStoreChildItemRecursive ([hashtable] $Params) {
$AllFiles = New-Object Collections.Generic.List[Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStoreItem];
recurseDataLakeStoreChildItem -AllFiles $AllFiles -Params $Params
$AllFiles
}

function recurseDataLakeStoreChildItem ([System.Collections.ICollection] $AllFiles, [hashtable] $Params) {
$ChildItems = Get-AzureRmDataLakeStoreChildItem @Params;
$Path = $Params["Path"];
foreach ($ChildItem in $ChildItems) {
switch ($ChildItem.Type) {
"FILE" {
$AllFiles.Add($ChildItem);
}
"DIRECTORY" {
$Params.Remove("Path");
$Params.Add("Path", $Path + "/" + $ChildItem.Name);
recurseDataLakeStoreChildItem -AllFiles $AllFiles -Params $Params;
}
}
}
}

Get-DataLakeStoreChildItemRecursive -Params @{ 'Path' = '/Samples'; 'Account' = 'youradlsaccount' }

关于Powershell - Azure Data Lake Store 中的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41274852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com