【问题标题】:Powershell Recursive file listing for specific types and include in string特定类型的 Powershell 递归文件列表并包含在字符串中
【发布时间】:2015-04-24 10:45:14
【问题描述】:

我有以下大部分有效的 PowerShell 2.0 代码。

    #$UserProfilePath is the path to recursively search
    $MailBody = $MailBody + "`r`n`r`n Potential Valuable Files located in                 $NLEFriendlyName's profile include:`r`n`r`n"
    $FileList = get-childitem -path $UserProfilePath -Recurse
    ForEach ($File in $FileList) {
    if ($File.Extension -eq ".doc") {$UsefulFiles = $UsefulFiles + "`r`n" + $File.name}
    elseif ($File.Extension -eq ".docx") {$UsefulFiles = $UsefulFiles + "`r`n" + $File.name}
    elseif ($File.Extension -eq ".xls") {$UsefulFiles = $UsefulFiles + "`r`n" + $File.name}
    elseif ($File.Extension -eq ".xlsx") {$UsefulFiles = $UsefulFiles + "`r`n" +  $File.name}
    elseif ($File.Extension -eq ".ppt") {$UsefulFiles = $UsefulFiles + "`r`n" +  $File.name}
    elseif ($File.Extension -eq ".pptx") {$UsefulFiles = $UsefulFiles + "`r`n" +  $File.name}
    elseif ($File.Extension -eq ".pdf") {$UsefulFiles = $UsefulFiles + "`r`n" +  $File.name}
    elseif ($File.Extension -eq ".txt") {$UsefulFiles = $UsefulFiles + "`r`n" +  $File.name}
                            }
    $MailBody = $MailBody + $UsefulFiles

它主要完成我所期望的工作,即生成在用户配置文件目录中找到的文件列表。

问题是回车符(`r`n) 并不总是得到尊重。我的 $MailBody 变量最终看起来像下面的 sn-p,它开始很好,但停止了。

20150114-Error.txt
Server List.txt
Server Port Breakdown.xlsx
ds_time.txt
Business Continuity - Call Center Services 2009a (2) (4)-old.pdf Business Continuity - Call Center Services 2009a (2) ....pdf New Text Document.txt Office2013Rearm.txt UserList.txt StopScreensaver.txt Testing Doc 201501081355.txt Antivirus KB.docx Antivirus-Deployment.txt

This posting 多少暗示了一种可能性,但我不确定如何将其翻译成我的脚本:

我确信还有一种更优化的方式来列出所有文件扩展名。

【问题讨论】:

    标签: powershell file-type


    【解决方案1】:

    我也尝试清理一下选择过程。

    #sample variables
    #$UserProfilePath = 'C:\Users\bob'
    #$NLEFriendlyName='bob'
    
    #select extensions to search
    $ext = ".doc",".docx",".xls",".xlsx",".ppt",".pptx",".pdf",".txt"
    $FileList = get-childitem -path $UserProfilePath -Recurse
    $UsefulFiles = $FileList | Where-Object {$_.extension -in $ext} | select -expand name
    $MailBody = $MailBody + "`r`n`r`n Potential Valuable Files located in $NLEFriendlyName's profile include:`r`n`r`n"
    $MailBody = $MailBody + ($UsefulFiles -join "`r`n")
    

    【讨论】:

    • 感谢您为我指出文件扩展名数组的正确方向。我认为会有比我最初拥有的更简单的方法。在回车问题上,如果我在 GMail 的网络界面中查看邮件正文,它会显示得很漂亮;但是,如果我在 Outlook 2013 中查看它,回车似乎并没有得到一致应用,我最终得到了我在原始帖子中发布的内容。
    • 在 Outlook Web Access 中查看生成的电子邮件时,它看起来也很棒。 Outlook 2013 客户端处理rn 文本的方式有些特殊。我不知道 -join 命令,所以我开始阅读。
    • 我找到了 Outlook 2013 客户端中的换行问题的可能解决方案。我将不得不尝试一下。 stackoverflow.com/questions/136052/…
    • 根据上面链接到136052的信息,我在rn前面加了5个空格。它很好地清理了我的 Outlook 2013 客户端邮件正文。感谢约翰的回答/帮助。
    • @CorporalCupcake 感谢您告知我在 Outlook 中查看文本的问题。我自己会记住这一点的。愉快地学习 PowerShell。
    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2023-03-21
    • 1970-01-01
    • 2023-03-20
    • 2018-01-01
    相关资源
    最近更新 更多