【问题标题】:Get-ChildItem working but Import-csv defaulting to home dir PowershellGet-ChildItem 工作,但 Import-csv 默认为主目录 Powershell
【发布时间】:2015-02-27 20:36:40
【问题描述】:

我正在尝试通过电子邮件发送每天生成的报告。此外,尝试计算 csv 中的用户行数,并创建仅计算和发送最新报告的逻辑。

尽管变量中的文件名似乎具有正确的值,但当我在运行此脚本后检查时,我在 Import-csv 上不断收到错误消息,说它在默认用户目录中找不到文件而不是我指定的路径。这很烦人。请帮忙。谢谢

Add-PSSnapin Quest.ActiveRoles.ADManagement
$reports = "\\Server\G$\Marc\Scripts\DailyReports\active\"
$latest = Get-ChildItem -Path $reports | Sort-Object -Descending | Select-Object -First 1


$people = Get-QADUser -SizeLimit 0 -LdapFilter "(&(employeeID=*)(&(objectCategory=person)(objectClass=user)(!objectClass=inetOrgPerson))(sAMAccountName=*))” -includedproperties dn,sn,title,givenname,company,employeeID,primarysmtpaddress,SamAccountName
$people | select dn,sn,title,givenname,company,employeeID,primarysmtpaddress,@{Label="SamAccountName";Expression={$_.SamAccountName.ToLower()}} | ConvertTo-Csv -NoTypeInformation | select -Skip 1 > \\Server\G$\Marc\Scripts\DailyReports\active\Total-Active-Users-AD_$((Get-Date).ToString('MM-dd-yyyy')).csv


$TotalUsers = Import-csv -Path $Latest.name | Measure-Object | Select-Object -expand Count | Out-String

send-mailmessage -from "email@me.com" -to "email@me.com" -subject "Total AD Active Users Report " -body "Total Active Users today was $TotalUsers" -Attachments $Latest.name -priority High -dno onSuccess, onFailure -smtpServer Smtp.server.com

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    您的脚本是否从存储报告的同一目录运行?如果没有,这可能是您的问题:

    $Latest.Name 只会给您文件的名称,即“report.txt”或您的报告命名的任何名称。如果您运行 Import-Csv 并为其指定一个没有绝对路径的文件名,则 Powershell 将期望在当前目录(您的情况下为默认用户目录)中找到该文件。

    $Latest.FullName 将为您提供文件的绝对路径。尝试将其用作Import-Csv 的路径参数。

    【讨论】:

    • 啊,这就是我所缺少的!我正要为名称之前的其余路径创建一个新变量。谢谢!
    猜你喜欢
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多