Powershell - 属性中的表达式

Powershell - expression in properties

我不知道如何在 属性 声明中添加表达式。 我创建了一个脚本来获取服务器上的本地管理员成员并且它工作正常。 现在我想添加另一个 属性,它应该检查“管理员”属性 中指定的用户是否已启用,所以我添加了 属性、“用户已启用”,但它没有显示任何东西

Foreach ($server in $servers){

 Try{
       $admins = Gwmi win32_groupuser –computer $server -Erroraction Stop
       $admins = $admins |? {$_.groupcomponent –like '*"Administrators"'}
       $admins = $admins |% { $_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul 
       $matches[1].trim('"') + “\” + $matches[2].trim('"') | Where-Object {$_ -like "$domain*" -and $_ -notlike "*Domain Admins*"}}
       
      

        foreach ($admin in $admins){
           # remove domain name
           $username = $admin.Split('\')[1]
           # Create properties
           $administratorProperties = @{
           "Administrators" = $admin
           "Local Admin type" = "Domain users"
           "Machine name" = $server
            # check if local admin is enabled or not in AD
           Label ="User Enabled" ; expression = {(Get-AdUser -Filter "SamAccountName -eq '$userName'").Enabled}  

           }
           $adm += New-Object psobject -Property $administratorProperties
        }

         $adm | Select "Machine Name", "Administrators", "Local Admin type", "User Enabled" | Export-CSV "C:\Temp\LOcalAdmins.CSV" –NoTypeInformation
           

 }
 catch [Exception]
{
    if ($_.Exception.GetType().Name -like "*COMException*") {
         Write-Verbose -Message ('{0} is unreachable' -f $server) -Verbose
    }
    else{
         Write-Warning $Error[0]
    }
 }
} 
  

Machine name     : MACHINE
Administrators   : DOMAIN\User1
Label            : User Enabled
Local Admin type : Domain users
expression       : (Get-AdUser -Filter "SamAccountName -eq '$userName'").Enabled

是否可以检查 $username 变量中的用户是否启用。

属性 表达式用于动态计算 属性 值 - 你不需要它,因为你正在构建对象,其所有 属性 值都是预先知道的,所以您需要做的就是将 属性 值分配给哈希表 as-is:

中的相关键
    $administratorProperties = @{
        "Administrators" = $admin
        "Local Admin type" = "Domain users"
        "Machine name" = $server
        # check if local admin is enabled or not in AD
        "User Enabled" = (Get-AdUser -Filter "SamAccountName -eq '$userName'").Enabled
    }
    $adm += New-Object psobject -Property $administratorProperties