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

在Azure自动化中用PowerShell读取Azure文件共享文件返回空输出

问题排查与解决

你遇到的核心问题是**Get-AzStorageFileContent的用法误解**:这个cmdlet默认作用是将Azure文件共享中的文件下载到本地路径,而非直接返回文件的文本内容。你当前代码里直接输出$fileContent,其实它返回的是下载操作的文件元数据对象,不是实际内容,所以输出为空。

修正方案

要读取文件内容,需要先定位到目标文件对象,再通过文件流读取内容,具体实现如下:

修正后的代码

#Credentials for File Storage
$credentials = Get-AutomationPSCredential -Name "access_key"

# Storage account information
$storageAccountName = "xxxxx"
$storageAccountKey = $credentials.GetNetworkCredential().Password

# File share information
$shareName = "archive"
$filePath = 'test.txt'

try {
    # Construct the storage context
    $context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

    # List all files directly under the root of the share
    $files = Get-AzStorageFile -ShareName $shareName -Context $context

    foreach ($file in $files) {
        Write-Output "File: $($file.Name)"
    }

    # 获取目标文件对象
    $targetFile = Get-AzStorageFile -ShareName $shareName -Path $filePath -Context $context
    # 打开文件读取流
    $stream = $targetFile.OpenRead()
    $streamReader = New-Object System.IO.StreamReader($stream)
    # 读取全部内容
    $fileContent = $streamReader.ReadToEnd()

    Write-Output "File Content:"
    Write-Output $fileContent

    # 关闭流资源
    $streamReader.Close()
    $stream.Close()
}
catch {
    Write-Output "An error occurred: $_"
}

补充方案(先下载再读取)

如果需要先将文件下载到本地再读取,可以指定Get-AzStorageFileContent的-Destination参数到Azure自动化的临时目录,再用Get-Content读取:

# 下载文件到自动化临时目录
Get-AzStorageFileContent -ShareName $shareName -Path $filePath -Context $context -Destination $env:TEMP
# 读取本地文件内容
$fileContent = Get-Content (Join-Path $env:TEMP $filePath) -Raw
Write-Output $fileContent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:14:56