需要powershell cmd来导出本地用户密码有效期

用户深

我从Microsoft博客获得了以下powershell脚本。它完全可以满足我的环境需求,但是它显示密码的有效期为true或false。我需要提取所有本地用户的确切密码到期日期。请有人帮助以下脚本获取本地用户帐户的到期日期以及其他信息。

Param
(
[Parameter(Position=0,Mandatory=$false)]
[ValidateNotNullorEmpty()]
[Alias('cn')][String[]]$ComputerName=$Env:COMPUTERNAME,
[Parameter(Position=1,Mandatory=$false)]
[Alias('un')][String[]]$AccountName,
[Parameter(Position=2,Mandatory=$false)]
[Alias('cred')][System.Management.Automation.PsCredential]$Credential
)

$Obj = @()
$now = Get-Date
Foreach($Computer in $ComputerName)
{
If($Credential)
{
    $AllLocalAccounts = Get-WmiObject -Class Win32_UserAccount -Namespace "root\cimv2" `
    -Filter "LocalAccount='$True'" -ComputerName $Computer -Credential $Credential -ErrorAction Stop
}
else
{
    $AllLocalAccounts = Get-WmiObject -Class Win32_UserAccount -Namespace "root\cimv2" `
    -Filter "LocalAccount='$True'" -ComputerName $Computer -ErrorAction Stop
}

Foreach($LocalAccount in $AllLocalAccounts)
{



    $rawPWAge = ([adsi]"WinNT://$computer/$($LocalAccount.Name),user").PasswordAge.Value




    $Object = New-Object -TypeName PSObject

    $Object|Add-Member -MemberType NoteProperty -Name "Name" -Value $LocalAccount.Name
    $Object|Add-Member -MemberType NoteProperty -Name "Full Name" -Value $LocalAccount.FullName
        $Object|Add-Member -MemberType NoteProperty -Name "Disabled" -Value $LocalAccount.Disabled
        $Object|Add-Member -MemberType NoteProperty -Name "Status" -Value $LocalAccount.Status
        $Object|Add-Member -MemberType NoteProperty -Name "LockOut" -Value $LocalAccount.LockOut
    $Object|Add-Member -MemberType NoteProperty -Name "Password Expires" -Value $LocalAccount.PasswordExpires
    $Object|Add-Member -MemberType NoteProperty -Name "Password Required" -Value $LocalAccount.PasswordRequired
    $Object|Add-Member -MemberType NoteProperty -Name "Account Type" -Value $LocalAccount.AccountType
    $Object|Add-Member -MemberType NoteProperty -Name "Domain" -Value $LocalAccount.Domain
    $Object|Add-Member -MemberType NoteProperty -Name "Password Last Set" -Value ($now).AddSeconds(-$rawPWAge)
    $Object|Add-Member -MemberType NoteProperty -Name "Password Age" -Value ($now-($now.AddSeconds(-$rawPWAge))).Days
    $Object|Add-Member -MemberType NoteProperty -Name "Description" -Value $LocalAccount.Description




    $Obj+=$Object
}

If($AccountName)
{
    Foreach($Account in $AccountName)
    {
        $Obj|Where-Object{$_.Name -like "$Account"}
    }
}
else
{
    $Obj
}
}
安斯加·威彻斯(Ansgar Wiechers)

为了让你需要减去密码失效日期PasswordAgeMaxPasswordAge并添加所产生的秒到数$now

$user = [adsi]"WinNT://$computer/$($LocalAccount.Name),user"
$rawPWAge = $user.PasswordAge.Value
$maxPWAge = $user.MaxPasswordAge.Value
...
$Object | Add-Member -MemberType NoteProperty -Name 'Password Expiry Date' `
                -Value $now.AddSeconds($maxPWAge - $rawPWAge)

附带说明,您永远不要$Obj+=$Object在循环中使用将对象添加到数组会将所有项目从现有数组复制到新数组(大小+ 1),因此可以确保该操作执行不佳。最好ForEach-Object在管道中使用循环:

$Obj = $AllLocalAccounts | ForEach-Object {
         $user = ([adsi]"WinNT://$computer/$($_.Name),user")
         $pwAge    = $user.PasswordAge.Value
         $maxPwAge = $user.MaxPasswordAge.Value
         $pwLastSet = $now.AddSeconds(-$pwAge)

         New-Object -TypeName PSObject -Property @{
           'Name'                 = $_.Name
           'Full Name'            = $_.FullName
           'Disabled'             = $_.Disabled
           'Status'               = $_.Status
           'LockOut'              = $_.LockOut
           'Password Expires'     = $_.PasswordExpires
           'Password Required'    = $_.PasswordRequired
           'Account Type'         = $_.AccountType
           'Domain'               = $_.Domain
           'Password Last Set'    = $pwLastSet
           'Password Age'         = ($now - $pwLastSet).Days
           'Password Expiry Date' = $now.AddSeconds($maxPwAge - $pwAge)
           'Description'          = $_.Description
         }
       }

这将自动生成一个对象列表,然后将其分配给$Obj

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

需要检查信用卡有效期是否在Java中有效

来自分类Dev

Powershell设置新的本地用户强制更改密码

来自分类Dev

如何启用密码的有效期限?

来自分类Dev

Cookie有效期

来自分类Dev

为什么远程Powershell会话不需要密码

来自分类Dev

需要有关PowerShell列循环的帮助

来自分类Dev

需要有关PowerShell列循环的帮助

来自分类Dev

有多个有效期的Cookie

来自分类Dev

在PowerShell中启用本地用户权限分配

来自分类Dev

在PowerShell中启用本地用户权限分配

来自分类Dev

选择历史表的有效期

来自分类Dev

如何获取域名的有效期?

来自分类Dev

选择历史表的有效期

来自分类Dev

刷新令牌的有效期是多久?

来自分类Dev

如何禁用密码有效期而不会发生变化?

来自分类Dev

Azure AD B2C 是否可以设置密码有效期?

来自分类Dev

如何在Wordpress中获得用户帐户有效期

来自分类Dev

如何通过Powershell将用户权限分配给本地用户帐户?

来自分类Dev

令牌有效期有多长?Django REST框架

来自分类Dev

Windows 10免费升级有有效期吗?

来自分类Dev

PowerShell-具有命名捕获组的正则表达式需要协助

来自分类Dev

带有Powershell的批次重命名-需要查找并与csv中的标题匹配file_id

来自分类Dev

如何配置文本字段以说明有效期?

来自分类Dev

Redis有效期密钥保存内存

来自分类Dev

如何给会员增加有效期?

来自分类Dev

HTML中的信用卡有效期验证

来自分类Dev

有效期后更改值PHP MYSQL

来自分类Dev

如何使用mysql查询计算有效期?

来自分类Dev

如何配置文本字段以说明有效期?