gpt4 book ai didi

Powershell 日期时间空值

转载 作者:行者123 更新时间:2023-12-04 01:34:13 24 4
gpt4 key购买 nike

我正在开发一个关于 AD 用户帐户到期日期的 powershell。但我遇到了一个问题,无法传递空参数来将 AD 用户帐户到期日期设置为 NEVER。

请帮忙!谢谢。

/image/Zt8sv.png

下面是我的脚本。

import-module C:\PS\color_menu.psm1
CreateMenu -Title "AD User Account Expire Tools" -MenuItems "View the User Account Expire Date","Set the User Account Expire Date","Exit" -TitleColor Red -LineColor Cyan -menuItemColor Yellow
do {
[int]$userMenuChoice = 0
while ( $userMenuChoice -lt 1 -or $userMenuChoice -gt 3) {
Write-Host "1. View the User Account Expire Date"
Write-Host "2. Set the User Account Expire Date"
Write-Host "3. Exit"

[int]$userMenuChoice = Read-Host "Please choose an option"
switch ($userMenuChoice) {
1{$useraccount = Read-Host -prompt "Please input an user account"
Get-ADUser -Identity $useraccount -Properties AccountExpirationDate | Select-Object -Property SamAccountName, Name, AccountExpirationDate
Write-Host "";
Write-Host "";
}
2{$useraccount = Read-Host -prompt "Please input an user account"
[Datetime]$expiredatetime = Read-Host -prompt "Please input the user expire date and time (DateFormat: MM/dd/yyyy)"
Set-ADAccountExpiration -Identity $useraccount -DateTime $expiredatetime
Write-Host "";
Write-Host "";
Get-ADUser -Identity $useraccount -Properties AccountExpirationDate | Select-Object -Property SamAccountName, Name, AccountExpirationDate
Write-Host "";
Write-Host "";

}
3{Write-Host "Exit";Exit
}
default {Write-Host "Incorrect input" -ForegroundColor Red
Write-Host "";
Write-Host "";
}
}
}
} while ( $userMenuChoice -ne 3 )```



最佳答案

使用Clear-ADAccountExpiration将帐户设置为永不过期。

此外,您不能直接在 Read-Host 调用中使用 [datetime] 类型约束变量,因为转换空字符串 ('') 到 [datetime] 不受支持(您看到的错误)。

这是解决此问题的一种方法:

do {
# Read the input as a string first...
$expiredatetimeStr = Read-Host -prompt "Please input the user expiration date and time (DateFormat: MM/dd/yyyy) or just press Enter to make the account non-expiring"
# ... and then try to convert it to [datetime]
if ($expiredatetime = $expiredatetimeStr -as [datetime]) {
Set-ADAccountExpiration -Identity $useraccount -DateTime $expiredatetime
}
elseif ($expiredatetimeStr.Trim() -eq '') { # empty input -> no expiration
Clear-ADAccountExpiration -Identity $useraccount
}
else { # invalid input
Write-Warning 'Please enter a valid date.'
continue
}
break
} while ($true)

关于Powershell 日期时间空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60950949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com