Un esempio PowerShell per aggiungere dei PC di logon alla proprietà Log On To... di un utente Active Directory.

Configura la variabile $ComputerN e imposta la query $s.Filter per non agire su tutti gli utenti di AD.

PowerShell: Modify_LogOnTo.ps1
# File: Modify_LogOnTo.ps1
# aggiorna la proprietà Log On To
#
Clear

########################################
#computer da aggiungere alla "Log On To..." separati da virgola
$ComputerN = "COMPUTER1,COMPUTER2"
########################################

Write-host "Start..."

$s = New-Object System.DirectoryServices.DirectorySearcher 
$s.PageSize = 15000 
#lo applico a tutti gli utenti senza nessun filtro particolare
$s.Filter = "(&(objectCategory=person)(objectCategory=User))"   
#eseguo la query
$s.FindAll() | % {

  $UserN = $_.Properties.samaccountname

  Write-host -NoNewLine "Updating $UserN ..."

  $ObjFilter = "(&(objectCategory=person)(objectCategory=User)(samaccountname=$UserN))" 
  $objSearch = New-Object System.DirectoryServices.DirectorySearcher 
  $objSearch.PageSize = 15000 
  $objSearch.Filter = $ObjFilter  
  $AllObj = $objSearch.findOne()
  $user = [ADSI] $AllObj.path
    
  $arrComputer = $ComputerN.split(",")
  try{
    If (($user.get("userWorkstations")) -ne $null)  {
            #se l'utente ha già dei pc su cui fa Log On, aggiungo quelli nuovi
      $v = $user.get("userWorkstations").split(",");
      $v | % { 
        if($ComputerN.contains($_) -eq $false ) {
          $arrComputer = $arrComputer + $_
        }
      }
    }
  }catch{}

  try{
    #aggiorno la proprietà Log On To...
    Write-Host -NoNewLine " $s " -foreground green
    #creo la stringa con tutti i pc di logon
    $s = [string]::join(",",  $arrComputer)
    $user.psbase.invokeSet("userWorkstations", $s)
    $user.setinfo() 
    Write-host "Done!"
  }catch{
    Write-Host -NoNewLine "NULL" -foreground red
  }
}
Potrebbe interessarti anche: