首页 > 解决方案 > Powershell 查询 - 找不到路径的一部分

问题描述

我正在尝试使用 power shell 脚本从 csv 列表中查询电子邮件 ID 并发送批量个性化电子邮件。csv 文件和脚本都位于桌面上的同一文件夹中(\DECSRV02\Folder Redirection\paranjyoti\桌面\Powershell_massmail)。该脚本包含 csv 导入为:

$csv = Import-Csv 'C:\Users\paranjyoti\Desktop\Powershell_massemail\UserList.csv'
$Credential = Get-Credential
Foreach($Message in $csv){
$Recipient = $Message.EmailAddress
$FirstName = $Message.FirstName
$LastName = $Message.Surname
$Course = $Message.Course
$Grade = $Message.Grade
$Subject = "$FirstName $LastName - $Course Exam Result"
Write-Host "Sending email to $FirstName $LastName"
Write-Host "Email Address: $Recipient"
$mailBody = 
@"
Hello $FirstName,</br>
We have marked your recent exam and the results are as follows:</br>
</br>
Student Name: $LastName, $FirstName</br>
Course: $Course</br>
Result: $Grade</br>
</br>
Thank you for taking a course at our school,</br>
The Faculty
"@

Send-MailMessage -Body $mailBody -BodyAsHtml `
-From "faculty@greatschool.com" -To $Recipient `
-Subject $subject -Encoding $([System.Text.Encoding]::UTF8) `
-Credential $Credential -SmtpServer "smtp.office365.com" -UseSSLcopy
}

运行脚本时,错误出现为“找不到路径的一部分” 显示了附加的错误消息图像 请您帮助识别错误。

标签: powershellcsvemailfilepath

解决方案


我得到了如下错误,即使它不是上述问题的确切答案,我也会在这里与任何有类似问题的人分享。

Copy-Item:找不到路径的一部分“D:\projects\changeDetection\cubeRepos\cm-2.0\ConceptMiner2\CM.Spidering.CsSched uleLightweight\csx\Debug\roles\CM.Spidering.CsScheduleLightweight.Worker\approot \Templates\TEST\TEST\REG\TEST--TEST--REG--CACH E-REFRESH\TEST--TEST--REG--CACHE-REFRESH.structure.json”。

但是我验证了上面提到的文件夹路径是存在的,并且可以在想要的目录下创建文件。一些谷歌搜索得到了问题的真正原因。这是因为 windows对文件路径有260 个字符的限制。您会注意到我的路径正好有260 个字符,但是在路径长度验证中存在一个小问题。Path 在路径末尾附加了一个空字符。所以总路径长度变为 261导致它失败。

最快的解决方法是重命名文件,使新文件名少于 260 个字符。有关此错误的更多信息以及扩展路径限制的方法,请参阅Microsoft 文档


推荐阅读