You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Functions中运行PowerShell脚本操作ADLS Gen2容器文件

在Azure Function中运行PowerShell脚本处理ADLS Gen2文件的操作步骤

前置准备

  • 创建Azure Function资源,运行时栈选择PowerShell Core,版本建议选7.2及以上
  • 为函数配置ADLS Gen2访问权限:启用函数的系统托管身份,给该身份分配对应ADLS Gen2容器的「存储Blob数据参与者」角色;也可以将存储账户连接字符串存入函数应用配置,键名为ADLS_Storage_ConnString

步骤1:配置依赖模块

在函数应用的requirements.psd1文件中添加Az.Storage模块依赖,确保可以调用ADLS Gen2操作命令:

@{
    'Az.Storage' = '6.*'
}

步骤2:编写适配Azure Function的PowerShell脚本

你原有的本地脚本无法直接在函数中运行,需要先完成ADLS Gen2的连接挂载,再执行对应操作,调整后参考代码如下:

# 引入依赖模块
Import-Module Az.Storage

# 连接存储账户,此处使用应用配置中存储的连接字符串
$connString = $env:ADLS_Storage_ConnString
$storageContext = New-AzStorageContext -ConnectionString $connString
$containerName = "你的ADLS容器实际名称"

# 挂载ADLS Gen2容器为PowerShell驱动器,即可兼容原生文件操作命令
New-PSDrive -Name ADLS -PSProvider AzureStorage -Root $containerName -Context $storageContext | Out-Null
Set-Location ADLS:

# --- 原有业务逻辑适配实现 ---
# 1. 重命名目标目录下的txt文件
Get-ChildItem 'Inbound/BOB/2021/09/*.txt' | ForEach-Object {
    # 执行第一次重命名规则
    $newName1 = $_.BaseName.Substring(0, $_.BaseName.Length - 16) + $_.Extension -replace "_"," "
    $_ | Rename-Item -NewName $newName1 -Force
    # 执行第二次重命名规则,截取名称第8位之后的内容
    $renamedFile = Get-Item $newName1
    $newName2 = $renamedFile.Name.Substring(8)
    $renamedFile | Rename-Item -NewName $newName2 -Force
}

# 2. 替换文件内的双竖线分隔符为单竖线
Get-ChildItem 'Inbound/BOB/2021/09/*.txt' | ForEach-Object {
    $content = Get-Content $_.FullName -Raw
    $content = $content.Replace('||', '|')
    $content | Set-Content $_.FullName -Force
}

注意事项

  • 原脚本中重复执行了两次替换操作,属于冗余代码,调整后已经移除重复逻辑
  • 如果需要动态适配年月路径,可以将硬编码的2021/09替换为Get-Date -Format "yyyy/MM"自动生成
  • 触发方式可根据需求选择:定时批量处理选Timer Trigger,文件上传后自动处理选Blob Trigger

内容的提问来源于stack exchange,提问作者Azeem khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:42:02