0

我有一个脚本在以管理员身份运行时可以正常工作,但在以普通用户身份运行时会出现 Parse 错误。有任何想法吗?;在此处输入图像描述

脚本

`NeverExpires = 9223372036854775807;
$ExpireMin = (Get-Date).AddDays(4);
$ExpireMax = (Get-Date).AddDays(9);

$Userlist = Get-ADUser -Filter * -Properties name, samaccountname, accountexpirationdate, enabled, distinguishedname, accountExpires | Where-object {($_.DistinguishedName -notlike "*OU=Terminated,OU=Users,OU=Home Office,DC=Domain,DC=com")} |
Where-Object {$_.accountExpires -ne $NeverExpires  `
-and [datetime]::FromFileTime([int64]::Parse($_.accountExpires)) -lt $ExpireMax `
-and [datetime]::FromFileTime([int64]::Parse($_.accountExpires)) -gt $ExpireMin }

$Userlist |  select name, samaccountname, accountexpirationdate, enabled, distinguishedname | export-csv $ReportName -notypeinformation

Send-MailMessage -To $To -From $From -Subject $Subject -Body $Body -SMTPServer $SMTPServer -Attachments $ReportName 

Get-ADUser -Filter * -Properties accountExpires | 
Where-Object {$_.accountExpires -ne $NeverExpires  `
-and [datetime]::FromFileTime([int64]::Parse($_.accountExpires)) -lt $ExpireMax `
-and [datetime]::FromFileTime([int64]::Parse($_.accountExpires)) -gt $ExpireMin } | ForEach { 
      $account = $_ 
      $manager = Get-ADUser -Identity $account -Properties EmailAddress,Manager | %{(Get-AdUser $_.Manager -Properties EmailAddress).EmailAddress}`
4

1 回答 1

0

我会说这$_.accountExpires是空的,因为该属性无法检索或$_本身为空。Powershell 会悄悄地将 null 转换为空字符串,从而导致解析格式无效。请注意,Parse调用是完全没有必要的,因为 powershell 会自动尝试为您强制转换字符串,并且可能会为您提供更好的错误消息。虽然 null 将被强制为 0 作为 long。

于 2013-09-28T19:25:22.813 回答