Powershell 脚本可以记录已扫描的文件并在下次运行时忽略它们?

2024-03-14

我正在尝试编写一个脚本,该脚本将递归扫描目录、带有“.Error”扩展名的本地文件,然后通过电子邮件向一群人发送文件列表。我计划通过 Control-M 运行此脚本,并让它每 20 分钟运行一次。我希望脚本记录自上次运行以来已扫描的文件,而不是将它们包含在电子邮件中。我是一个 powershell 新手,所以我不知道如何做到这一点。下面是我必须扫描文件并发送电子邮件的代码的消毒版本。我非常感谢任何人的帮助。

function sendEmail {
    $SMTPServer = "relay.EXAMPLE.com"
    $SMTPFrom = "[email protected] /cdn-cgi/l/email-protection" 
    $EmailAddress = "[email protected] /cdn-cgi/l/email-protection"
        send-mailmessage -to $EmailAddress -from $SMTPFrom -Subject "Error loading XPOLL File - $file" -body "This is the body" -smtpserver $SMTPServer 
}

##Search for .Error files
$array = @((Get-ChildItem -Path \\SERVER\FOLDER -Recurse -Include *.Error).Fullname)
foreach ($file in $array) {
    sendEmail
}
##


尝试将任务分解为简单的步骤:

  • 从文件中读取排除列表
  • 发现文件
  • 根据排除列表过滤文件
  • 发电子邮件
  • 将新的排除列表附加到文件
$exclusionFilePath = '.\path\to\exclusions\file.txt'
if(-not(Test-Path $exclusionFilePath)){
    # Create the exclusion file if it doesn't already exist
    New-Item $exclusionFilePath -ItemType File
}

# read list of exclusions from file
$exclusions = Get-Content -Path $exclusionFilePath

# discover files
$array = @((Get-ChildItem -Path \\SERVER\FOLDER -Recurse -Include *.Error).Fullname)

# filter current files against list of exclusions
$array = $array |Where-Object {$exclusions -notcontains $_}

foreach($file in $array){
  # send emails
  sendEmail

  # append new file path to exclusions file
  $file |Add-Content -Path $exclusionFilePath
}

额外提示:参数化你的函数

依赖调用上下文中的变量有点反模式,我强烈建议重构你的sendEmail函数类似于:

function Send-ErrorFileEmail {
    param(
        [string]$File
    )
    $MailMessageArgs = @{
        SMTPServer = "relay.EXAMPLE.com"
        From       = "[email protected] /cdn-cgi/l/email-protection" 
        To         = "[email protected] /cdn-cgi/l/email-protection"
        Subject    = "Error loading XPOLL File - $file" 
        Body       = "This is the body" 
    }
    Send-MailMessage @MailMessageArgs
}

然后在脚本中使用它,例如:

Send-ErrorFileEmail -File $file
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell 脚本可以记录已扫描的文件并在下次运行时忽略它们? 的相关文章

随机推荐

  • 迁移到.net core 3.1后EF OrderBy出现问题

    考虑这段代码 dbContext Messages GroupBy m gt new MinId m SenderId lt m RecipientId m SenderId m RecipientId MaxId m SenderId g
  • 用g++编译简单的SDL程序时找不到-lSDLmain和-lSDL

    我使用 mingw 安装了 SDL2this http lazyfoo net SDL tutorials lesson01 windows mingw index php指导 但是 当我尝试使用他们提供的编译语法和测试代码进行编译时 仅使
  • java JNI 错误 java.lang.UnsatisfiedLinkError:

    java Djava library path TestJNI gt gt gt gt Exception in thread main java lang UnsatisfiedLinkError TestJNI calibrate D
  • 如何配置 GroovyConsole 以便我不必在启动时导入库?

    我有一个使用第三方库的常规脚本 每次我打开应用程序并尝试运行我的脚本时 我都必须导入正确的库 我希望能够打开 GroovyConsole 并运行我的应用程序 而无需导入库 在 Linux 中你也有 usr share groovy conf
  • NSString stringWithFormat 问题

    我正在尝试使用 NSString 构建一个小表 我似乎无法正确格式化字符串 这是我所拥有的 NSString stringWithFormat 8 6f e v 其中 e 是来自其他地方的 NSString v 是浮点数 我想要的是输出类似
  • Boost.Fusion运行时开关

    我正在从文件中读取对象的类型 enum class type index type index typeidx read file handle type index 根据类型索引 我想创建一个类型 从可能类型的列表中 并用它做一些通用的事
  • Pymongo 使用 $exists

    我是 pymongo 的新手 使用存在时遇到问题 使用时 collection find cwc exists True 我收到以下错误 Unsupported projection option exists 我想要完成的是找到所有 id
  • 可以使用反射访问方法变量吗?

    如何使用反射访问方法内定义的变量 我必须在 Hibernate 中创建标准 数据库是基于属性的 考虑一部电影 一部电影可以有多种语言和多种类型 例如 Movieid Property Value 1 Language Hindi 1 Lan
  • Gulp Typescript + Browserify;捆绑的 sourcemap 指向转译的 JS 而不是源 TS

    我正在开发一个 Typescript 项目 该项目被转换为 ES5 JS 然后通过 browserify 运行以创建单个 js 包和源映射 捆绑的源映射指向转译的 JS而不是源TS即使我生成的源映射在转换为 JS 时正确指向源 TS 这就好
  • 在内存中SQLite3共享数据库python

    我试图充分利用 aws 服务器 并想到跨多个线程使用内存数据库 在 python 中使用 SQLite 3 我在网上找到了这个命令 conn sqlite3 connect file memory cache shared 但后来我得到了这
  • 在Python中,如何在一行代码中创建一个包含n个字符的字符串?

    我需要在Python中生成一个包含n个字符的字符串 是否有一个简单的答案可以使用现有的 Python 库来实现这一目标 例如 我需要一串 10 个字母 string val abcdefghij 简单地重复同一个字母 10 次 string
  • xargs的默认分隔符可以更改吗?

    我想要以下行为 而不必使用选项显式指定它 xargs d n 与大多数命令不同 您不能只使用别名 因为管道无法识别别名 顺便说一句 为什么要这样设计 我也尝试创建自己的 bin xargs脚本 但我认为这并不像在脚本中读取 作为字符串那么简
  • D3 单击更新数据集并重新绘制条形图

    我是 d3 和 javascript 的新手 并且在更新数据集以及重新绘制条形时遇到问题 这是我到目前为止一直在查看的代码 http jsfiddle net TwEhT 2 http jsfiddle net TwEhT 2 我有一个函数
  • python 或 dask 并行生成器?

    是否有可能在Python中 也许使用dask 也许使用多重处理 将生成器 放置 在核心上 然后并行地单步执行生成器并处理结果 它需要特别是生成器 或带有 iter 生成器生成的所有生成元素的列表不适合内存 尤其 有了熊猫 我可以打电话rea
  • CSS margin vh 无法正常工作

    grenze background green height 96vh width 96vh baukasten background white height 86vh width 86vh margin 5vh border 1px s
  • 保持 CurrentCulture 处于异步/等待状态

    我有以下伪代码 string GetData var steps new List
  • 春季安全3.1

    当我尝试使用 Spring Security 的自定义登录表单时 无论我是否输入了正确的凭据 它都会将我返回到 admin login 页面 当我使用空的
  • joomla 将视图添加到另一个视图中

    我使用 joomla MVC 我想构建一个具有不同选项卡的表单 这些选项卡是表单的不同部分 其中包含输入 我需要包含一些与其他表单通用的选项卡 我希望能够从单独的文件或视图加载此常见内容 这样我就没有重复的代码 而且当我需要对表单进行更改时
  • 获取Enum值的名称

    我正在尝试创建一个函数 我们可以在其中获取枚举值的名称值 例如 Get Enum ValueName DayOfWeek 0 这将返回 Sunday 但我的代码不起作用 它说类型未定义 Private Function Get Enum V
  • Powershell 脚本可以记录已扫描的文件并在下次运行时忽略它们?

    我正在尝试编写一个脚本 该脚本将递归扫描目录 带有 Error 扩展名的本地文件 然后通过电子邮件向一群人发送文件列表 我计划通过 Control M 运行此脚本 并让它每 20 分钟运行一次 我希望脚本记录自上次运行以来已扫描的文件 而不