Come estrarre l’elenco dei computer membri del dominio in CSV ed altri dettagli
Powershell ed i suoi cmdlet sono estremamente comodi per scriptare ed automatizzare task di gestione di Active Directory come, ad esempio, l’estrazione di tutti i computer membri di AD ed altre infomazioni utili.
Per fare questo abbiamo bisogno della cmdlet Get-ADComputer e la command-line powershell è la seguente:
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,LastLogonDate | Export-CSV computer_ad.csv -Encoding UTF8
Il CSV verrà creato con il nome computer_ad.csv
e conterrà per ogni riga l’hostname dei computer presenti in AD, la versione del sistema operativo e la data di ultima connessione ad AD del computer.
Il comando Get-ADComputer in particolare ottiene uno o più computer Active Directory.
Get-ADComputer
[-AuthType ]
[-Credential ]
-Filter
[-Properties ]
[-ResultPageSize ]
[-ResultSetSize ]
[-SearchBase ]
[-SearchScope ]
[-Server ]
[]
Get-ADComputer
[-AuthType ]
[-Credential ]
[-Identity]
[-Partition ]
[-Properties ]
[-Server ]
[]
Get-ADComputer
[-AuthType ]
[-Credential ]
-LDAPFilter
[-Properties ]
[-ResultPageSize ]
[-ResultSetSize ]
[-SearchBase ]
[-SearchScope ]
[-Server ]
[]
Descrizione
Il cmdlet Get-ADComputer ottiene un computer o esegue una ricerca per recuperare più computer.
Il parametro Identity consente di specificare il computer Active Directory da recuperare. È possibile identificare un computer in base al nome distinto, al GUID, all’identificatore di sicurezza (SID) o al nome dell’account Security Accounts Manager (SAM). È inoltre possibile impostare il parametro su una variabile oggetto computer, ad esempio $<localComputerobject>
o passare un oggetto computer tramite la pipeline al parametro Identity .
Per cercare e recuperare più di un computer, utilizzare i parametri Filtro o LDAPFilter . Il parametro Filter usa il linguaggio delle espressioni di PowerShell per scrivere le stringhe di query per Active Directory. La sintassi di PowerShell Expression Language fornisce il supporto per la conversione di tipi avanzati per i tipi di valore ricevuti dal parametro Filter . Per ulteriori informazioni sulla sintassi del parametro Filter , digitare Get-Help
about_ActiveDirectory_Filter . Se sono presenti stringhe di query LDAP (Lightweight Directory Access Protocol), è possibile utilizzare il parametro LDAPFilter .
Questo cmdlet recupera un insieme predefinito di proprietà dell’oggetto computer. Per recuperare proprietà aggiuntive utilizzare il parametro Properties . Per ulteriori informazioni su come determinare le proprietà per gli oggetti computer, vedere la descrizione del parametro Proprietà .
Esempi
Esempio 1: Ottieni un computer specifico che mostra tutte le proprietà
PS C:\> Get-ADComputer -Identity "User01-SRV1" -Properties *
AccountExpirationDate :
accountExpires : 9223372036854775807
AccountLockoutTime :
AccountNotDelegated : False
AllowReversiblePasswordEncryption : False
BadLogonCount :
CannotChangePassword : False
CanonicalName : fabrikam.com/Computers/User01-srv1
Certificates : {}
CN : User01-srv1
codePage : 0
countryCode : 0
Created : 3/16/2009 4:15:00 PM
createTimeStamp : 3/16/2009 4:15:00 PM
Deleted :
Description : DisplayName :
DistinguishedName : CN= User01-srv1,CN=Computers,DC=fabrikam,DC=com
DNSHostName : User01-srv1
DoesNotRequirePreAuth : False
dSCorePropagationData : {3/16/2009 4:21:51 PM, 12/31/1600 4:00:01 PM}
Enabled : True
HomedirRequired : False
HomePage :
instanceType : 0
IPv4Address :
IPv6Address :
isCriticalSystemObject : False
isDeleted :
LastBadPasswordAttempt :
LastKnownParent :
LastLogonDate :
localPolicyFlags : 0
Location : NA/HQ/Building A
LockedOut : False
ManagedBy : CN=SQL Administrator 01,OU=UserAccounts,OU=Managed,DC=fabrikam,DC=com
MemberOf : {}
MNSLogonAccount : False
Modified : 3/16/2009 4:23:01 PM
modifyTimeStamp : 3/16/2009 4:23:01 PM
msDS-User-Account-Control-Computed : 0
Name : User01-srv1
nTSecurityDescriptor : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory : CN=Computer,CN=Schema,CN=Configuration,DC=fabrikam,DC=com
ObjectClass : computer
ObjectGUID : 828306a3-8ccd-410e-9537-e6616662c0b0
objectSid : S-1-5-21-41432690-3719764436-1984117282-1130
OperatingSystem :
OperatingSystemHotfix :
OperatingSystemServicePack :
OperatingSystemVersion :
PasswordExpired : False
PasswordLastSet :
PasswordNeverExpires : False
PasswordNotRequired : False
PrimaryGroup : CN=Domain Computers,CN=Users,DC=fabrikam,DC=com
primaryGroupID : 515
ProtectedFromAccidentalDeletion : False
pwdLastSet : 0
SamAccountName : User01-srv1$
sAMAccountType : 805306369
sDRightsEffective : 0
ServiceAccount : {}
servicePrincipalName : {MSOLAPSVC.3/User01-SRV1.fabrikam.com:analyze, MSSQLSVC/User01-SRV1.fabrikam.com:1456}
ServicePrincipalNames : {MSOLAPSVC.3/User01-SRV1.fabrikam.com:analyze, MSSQLSVC/User01-SRV1.fabrikam.com:1456}
SID : S-1-5-21-41432690-3719764436-1984117282-1130
SIDHistory : {}
TrustedForDelegation : False
TrustedToAuthForDelegation : False
UseDESKeyOnly : False
userAccountControl : 4096
userCertificate : {}
UserPrincipalName :
uSNChanged : 36024
uSNCreated : 35966
whenChanged : 3/16/2009 4:23:01 PM
whenCreated : 3/16/2009 4:15:00 PM
Questo comando ottiene un computer specifico che mostra tutte le proprietà.
Esempio 2: Ottieni tutti i computer con un nome che inizia con una stringa particolare
PS C:\> Get-ADComputer -Filter 'Name -like "User01*"' -Properties IPv4Address | FT Name,DNSHostName,IPv4Address -A
name dnshostname ipv4address
---- ----------- -----------
User01-SRV1 User01-SRV1.User01.com 10.194.99.181
User01-SRV2 User01-SRV2.User01.com 10.194.100.3
Questo comando ottiene tutti i computer con un nome che inizia con una stringa particolare e mostra il nome, il nome host DNS e l’indirizzo IPv4.
Esempio 3: ottiene tutti i computer che hanno cambiato la password in un intervallo di tempo specifico
PS C:\> $Date = [DateTime]::Today.AddDays(-90)
PS C:\> Get-ADComputer -Filter 'PasswordLastSet -ge $Date' -Properties PasswordLastSet | FT Name,PasswordLastSet
Name PasswordLastSet
---- ---------------
USER01-SRV4 3/12/2009 6:40:37 PM
USER01-SRV5 3/12/2009 7:05:45 PM
Questo comando ottiene tutti i computer che hanno modificato la password negli ultimi 90 giorni.
Esempio 4: ottenere account computer in una posizione specifica utilizzando un LDAPFilter
PS C:\> Get-ADComputer -LDAPFilter "(name=*laptop*)" -SearchBase "CN=Computers,DC= User01,DC=com"
name
----
pattiful-laptop
Lukeche-laptop
Questo comando ottiene gli account computer nella posizione CN=Computers,DC=User01,DC=com elencati come laptop utilizzando LDAPFilter .
Esempio 5: ottenere tutti gli account computer utilizzando un filtro
PS C:\> Get-ADComputer -Filter *
Questo comando ottiene tutti gli account del computer.