如何从Posh-SSH的Get-SFTPChildItem输出中提取文件名
从Posh-SSH的Get-SFTPChildItem结果中提取特定格式文件名
步骤1:获取SFTP目录项
先确保已建立有效的SFTP会话(通常存储在$session变量中),再获取目标路径下的所有目录项:
$sftpItems = Get-SFTPChildItem -Session $session -Path "/你的目标SFTP路径"
步骤2:提取并过滤目标格式文件名
针对REGISTRATION_ELI_YYYYMMDD_HHMMSS.csv这类格式的文件名,用正则表达式匹配精准过滤:
# 过滤符合格式的文件名并提取名称字段 $targetFileNames = $sftpItems | Where-Object { $_.Name -match '^REGISTRATION_ELI_\d{8}_\d{6}\.csv$' } | Select-Object -ExpandProperty Name
正则表达式解析
^REGISTRATION_ELI_:匹配文件名开头的固定前缀\d{8}:匹配8位数字组成的日期(如20221222)_\d{6}:匹配下划线+6位数字组成的时间(如071008)\.csv$:匹配结尾的.csv后缀(.需转义,避免匹配任意字符)
简化链式写法
若无需保留所有SFTP项信息,可直接一步完成:
Get-SFTPChildItem -Session $session -Path "/你的目标SFTP路径" | Where-Object { $_.Name -match '^REGISTRATION_ELI_\d{8}_\d{6}\.csv$' } | Select-Object -ExpandProperty Name
格式适配调整
如果目标文件名格式有细微变化(比如前缀变体、日期时间格式不同),只需修改正则表达式对应部分即可。例如前缀允许REGISTRATION_ELI或REG_ELI,可将正则开头改为^(REGISTRATION_ELI|REG_ELI)_。
内容的提问来源于stack exchange,提问作者TITANIXX
相关产品推荐
相关产品推荐

