iT邦幫忙

0

PowerShell 帳號即將過期郵件提醒PS1

  • 分享至 

  • xImage

請教高手
#查詢指定OU符合條件的用戶,這裡篩選了未設定密碼永不過期以及帳號是啟用狀態的用戶
$AllUser = Get-ADUser -searchbase "dc=flytech,dc=com,dc=tw" -Filter 'PasswordNeverExpires -eq "false" -and enabled -eq "true"' | % {$.SamAccountName}
#進入循環
foreach ($User in $AllUser){
#取得上次設定密碼時間
$PwdLastset = Get-ADUser $User -Properties passwordlastset | % {$
.passwordlastset}
#計算過期日期,這裡是90天過期
$PwdLastday = ($PwdLastset).AddDays(90)
#取得電腦目前日期,確保執行此腳本的電腦日期準確
$Now = Get-Date
#計算密碼還剩多少天過期
$ExpireDays = ($PwdLastday - $Now).Days
#執行if語句,這判斷過期日期是否小於等於14且大於0,如果為真則發送郵件
if($expire_days -le "14" -and $expire_days -gt "0"){
$DN = Get-ADUser $User -Properties Displayname | % {$.Displayname}
$EmailAddress = Get-ADUser $User -Properties mail | % {$
.mail}
$EmailSubject = "您的密碼即將過期"
$Emailbody=
"親愛的 $chineseusername 同仁 :
您的網域帳戶密碼即將在 $expire_days 天後過期, $pwdlastday 之後您將無法登入電腦、無法使用無線網路、無法使用郵件、無法使用BPM,請您盡快更改。
重設密碼過程請遵循以下原則:

執行指令碼 出現以下錯誤可否高手指導
**不可在值為 Null 的運算式上呼叫方法。
位於 C:\temp\ADAccountPassword_V03.ps1:8 字元:1

  • $PwdLastday = ($PwdLastset).AddDays(90)
  •   + CategoryInfo          : InvalidOperation: (:) [],RuntimeException
      + FullyQualifiedErrorId : InvokeMethodOnNull**
    
nwm310 iT邦新手 3 級 ‧ 2024-05-18 11:18:26 檢舉
取代 $. 為 $_.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Jesse HO
iT邦好手 1 級 ‧ 2024-05-18 20:40:52

Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} –Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" | Select-Object -Property "samaccountname", @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} |  Where-object Expirydate -le (get-date).adddays(15) | Select-Object -Property "samaccountname" > AccountList.txt

我作法是一次查詢匯出結果
再分別通知

1
zero
iT邦好手 1 級 ‧ 2024-05-20 15:44:43

第一行就出錯了,就是上面留言的提到錯誤的內容了

請用編輯器去寫或者檢查,就算是複製網路上的程式碼也一樣

內建的 Powershell ISE 也可以檢查到這個錯誤

錯誤的語法 | % {$.SamAccountName}

正確的語法 | % {$_.SamAccountName}

第一行出錯沒有任何資料進入$AllUser的變數內

那之後的程式碼拉不到資料,當然會出錯,

那系統給的錯誤訊息 不可在值為 Null 的運算式上呼叫方法 一點都不奇怪

我要發表回答

立即登入回答