powershell - Powershell - 实时获取昨天的文件名
问题描述
我是 PowerShell 中的菜鸟,并试图用它来发送带有附件的电子邮件。
今天的日期是 2021-02-18。我有一个文件夹,里面有很多ERP系统每天创建的文件,文件名如下:
2021-2-17WO_rate.xlsx
2021-2-16WO_rate.xlsx
2021-2-15WO_rate.xlsx
2021-2-14WO_rate.xlsx
2021-2-13WO_rate.xlsx
2021-2-12WO_rate.xlsx
...
我希望脚本总是选择最新的文件作为附件
(Get-Date).AddDays(-1).ToString('yyyy-MM-dd')
可以得到昨天的日期,但是当我将它集成到下面的脚本中时,它失败了。在搜索了许多网站后,我不知道如何解决它。
任何人都可以帮助我吗?非常感谢。
我使用的代码如下:
$UserName = "XXXX@XXXXX.com"
$Password = ConvertTo-SecureString XXXXXX -AsPlainText –Force
$cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)
$a = (Get-Date).AddDays(-1).ToString('yyyy-MM-dd')
$mailParams = @{
SmtpServer = 'smtp.office365.com'
Port = '587' # or '25' if not using TLS
UseSSL = $true ## or not if using non-TLS
BodyasHtml = $true
Credential = $cred
From = $UserName
To = 'XXXXXX'
Subject = "WORK ORDER STATUS"
Body = 'XXXXXXX'
Attachments = '\\us-fs\us-Groups\Operationsus\Public\erpoutput\date\${a}WO_rate.xlsx'
DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}
Send-MailMessage @mailParams
解决方案
名称未填充的原因是因为您使用了单引号'
。如果要从变量中获取值,则需要使用双引号字符串"
:
<# Only relevant parts of the script, other lines removed #>
# Specify correct formatting string, based on the information from the question it should be either
$dataFormat = 'yyyy-M-d'
# or
$dataFormat = 'yyyy-M-dd'
$formattedDate = (Get-Date).AddDays(-1).ToString($dataFormat)
$mailParams = @{
<# other params #>
Attachments = "\\us-fs\us-Groups\Operationsus\Public\erpoutput\date\${formattedDate}WO_rate.xlsx"
}
Send-MailMessage @mailParams
注意:我还更改了变量名,以便清楚它的用途。
编辑:根据@Theo的评论更正日期格式
推荐阅读
- oracle-apex - 使用 Owa_cookie 包设置 cookie
- python - 根据列条件向 pandas 数据框添加行
- python - 复制并组合两个数据框熊猫
- python - 在块外部或内部编写脚本标签?
- rust - 如何在 Rust 中访问系统定时器中断
- java - 为什么我的 ImageButtons 不能为我的滑动益智游戏随机播放?
- excel - 我们如何在没有 MSCOMCT2.OCX 文件的情况下使用 datepicker?
- c++ - Cmake找不到提升窗口
- javascript - 在 *ngfor(Angular) 中插入具有特定样式属性的动态元素
- google-maps - ionic 4 地图在浏览器中工作但在 Andriod 设备中不工作