【发布时间】:2018-07-26 09:02:34
【问题描述】:
Stackoverflow 的新手,如果此请求的位置有误,敬请见谅。
我也是 PowerShell 的新手,并且一直在研究似乎由 PowerShell 提供的解决方案。由于缺乏经验,我无法修改示例脚本,所以我在这里寻求帮助。
我的目标是使用从每个 .msg 文件中提取的数据重命名位于文件夹和子文件夹中的许多 Outlook .msg 文件。就我而言,我需要发送日期(Senton)(和主题,但不太重要)。目前,这很痛苦,是手动完成的,需要很长时间,所以我认为我们需要一些东西来半自动化解决方案。
我在各种论坛和博客上四处搜索,发现了一个似乎朝着我想要的方向发展的脚本(详情如下),但我只是没有技能来完成最后一点发送日期并更改 .msg 文件名。我尝试了各种引用变量 $msg.Seton 的管道解决方案。 PowerShell 调试器指示带有注释“我的代码更改”的行具有良好的值,但每次对象迭代都会产生错误(与参数 NewName 相关)(见下文)。
任何有助于取得进展的帮助将不胜感激。同时,我将继续尝试调试器。
脚本来自这个 (http://jon.glass/blog/reads-e-mail-with-powershell/) 网站,脚本看起来像...
Get-ChildItem "C:\Users\higginsr4\Test\StudyExamples\SmallMsgFolder" -Filter *.msg|
ForEach-Object{
$outlook = New-Object -comobject outlook.application
$msg = $outlook.CreateItemFromTemplate($_.FullName)
$msg | Select senderemailaddress,to,subject,Senton,body|ft -AutoSize
$msg | Rename-Item -NewName { $msg.Senton + $_.name} ## My code changes
}
PowerShell 调试器错误...
重命名项目:参数“NewName”的脚本块输入失败。无法将“op_Addition”的参数“1”,值为:“”,以键入“System.TimeSpan”:“不能 将 null 转换为类型“System.TimeSpan”。” 在我的文档\WindowsPowerShell\Modules\GetEmailDetails\RobsGetEmailDetails.ps1:6 char:33 + $味精 |重命名项目 -NewName { $msg.Senton + $_.name} + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (System.__ComObject:__ComObject) [Rename-Item], ParameterBindingException + FullyQualifiedErrorId : ScriptBlockArgumentInvocationFailed,Microsoft.PowerShell.Commands.RenameItemCommand
我使用的是 Windows 7 企业版,但如果需要更多详细信息,请告诉我。
【问题讨论】:
标签: powershell