Script di update della proprietà Log On To...
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.
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
}
}