Cmdlet PowerShell Dapatkan-adcomputer dapat digunakan untuk memperoleh berbagai informasi tentang akun komputer (server dan workstation) dalam domain Direktori Aktif. Ini adalah salah satu cmdlet paling berguna untuk memilih dan mencari komputer dengan kriteria berbeda dalam domain AD (untuk mendapatkan informasi tentang akun pengguna AD, cmdlet lain digunakan - Get-ADUser).
Konten:
- Sintaks Dasar dan Menggunakan Get-ADComputer Cmdlet
- Dapatkan contoh cmdlet-ADComputer
Misalkan tugas Anda adalah menemukan di Active Directory semua komputer tidak aktif yang belum terdaftar di domain selama lebih dari 120 hari dan memblokir akun komputer ini.
Sebelum Anda mulai menggunakan cmdlet Get-ADComputer, Anda harus menghubungkan Modul Direktori Aktif untuk Windows PowerShell.
Direktori aktif Modul Impor
Aktifkan-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Sintaks Dasar dan Menggunakan Get-ADComputer Cmdlet
Bantuan tentang parameter cmdlet Get-ADComputer dipanggil secara standar menggunakan Get-Help:
Get-Help Get-ADComputer
Untuk mendapatkan informasi tentang akun domain komputer atau server tertentu, tentukan namanya sebagai argumen ke parameter -Identitas:
Dapatkan-ADComputer -Identity SRV-DB01
DistinguishedName: CN = DB01, OU = Server, OU = MSK, DC = winitpro, DC = en DNSHostName: DB01.winitpro.ru Diaktifkan: Nama Benar: DB01 ObjectClass: computer ObjectGUID: 1234567c-13f8-4a2c-8b00-b30a32324103 SamAccount DB01 $ SID: S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName:
Cmdlet hanya mengembalikan sifat dasar objek Komputer dari AD. Kami tertarik pada waktu pendaftaran komputer terakhir di domain AD, tetapi informasi ini tidak di output dari perintah. Daftar semua properti yang tersedia dari komputer ini dari Active Directory:
Dapatkan-ADComputer -Identity SRV-DB01 -Properti *
Dapatkan-ADComputer -Filter * -Properti * | Dapatkan anggota
Seperti yang Anda lihat, waktu komputer terakhir masuk ke jaringan ditunjukkan dalam atribut komputer LastLogonDate - 09/21/2015 12:20:17.
Cmdlet Get-ADComputer memungkinkan Anda menampilkan salah satu properti komputer di hasil perintah. Kami menghapus semua informasi yang tidak perlu, hanya menyisakan nilai bidang dalam output Nama dan LastLogonDate.
Dapatkan-ADComputer -identity SRV-DB01 -Properti * | Nama FT, LastLogonDate -Autosize
Jadi, kami mendapat data tentang pendaftaran terakhir kali di domain untuk satu komputer. Sekarang kita perlu mengubah perintah sehingga mengembalikan informasi tentang waktu pendaftaran terakhir di jaringan untuk semua komputer di domain. Untuk melakukan ini, ganti parameternya -Identitas pada -Saring:
Dapatkan-ADComputer -Filter * -Properti * | Nama FT, LastLogonDate -Autosize
Kami mendapat tabel yang hanya berisi 2 bidang: nama dan tanggal komputer LastLogonData. Anda bisa menambahkan bidang lain dari objek Komputer dari AD ke tabel ini. Untuk menampilkan informasi tentang komputer dalam wadah domain tertentu (OU), gunakan parameter SearchBase:Dapatkan-ADComputer -SearchBase 'OU = Moskow, DC = winitpro, DC = loc' -Filter * -Properti * | Nama FT, LastLogonDate -Autosize
Kami mengurutkan hasil permintaan pada saat login terakhir ke jaringan (bidang LastLogonDate) menggunakan perintah Sortir:
Dapatkan-ADComputer -Filter * -Properti * | Sortir LastLogonDate | Nama FT, LastLogonDate -Autosize
Jadi, kami mendapat daftar komputer domain dan waktu entri terakhir mereka ke jaringan Active Directory. Sekarang kami ingin memblokir akun komputer yang belum digunakan selama lebih dari 120 hari.
Menggunakan Get-Date, kami mendapatkan tanggal saat ini dalam variabel dan mengurangi 120 hari dari tanggal saat ini:
$ date_with_offset = (Get-Date) .AddDays (-120)
Variabel yang diperoleh dengan tanggal dapat digunakan sebagai filter untuk permintaan Get-ADComputer oleh LastLogonDate
Dapatkan-ADComputer -Properti LastLogonDate -Filter LastLogonDate -lt $ date_with_offset | Sortir LastLogonDate | Nama FT, LastLogonDate -Autosize
Dengan demikian, kami menerima daftar komputer tidak aktif yang tidak terdaftar di jaringan selama lebih dari 120 hari. Menggunakan cmdlet Set-adcomputer atau Disable-ADAccount Anda dapat menonaktifkan akun ini.
Kiat. Untuk pertama kalinya, lebih baik untuk menguji hasil perintah dengan sakelar -Whatif, terima kasih yang tim tidak membuat perubahan, menunjukkan apa yang akan terjadi ketika dieksekusi.
Dapatkan-ADComputer -Properti LastLogonDate -Filter LastLogonData -lt $ date_with_offset | Set-ADComputer -Enabled $ false -whatif
Sekarang Anda dapat memblokir semua akun komputer yang diterima:
Dapatkan-ADComputer -Properti LastLogonDate -Filter LastLogonData -lt $ datecutoff | Set-ADComputer -Enabled $ false
Kiat. Daftar komputer dan pengguna domain yang diblokir, terputus dan tidak aktif juga dapat diperoleh dengan menggunakan cmdlet Search-ADAccount yang terpisah..
Dapatkan contoh cmdlet-ADComputer
Berikut adalah beberapa contoh perintah yang lebih berguna menggunakan cmdlet Get-ADComputer yang dapat Anda gunakan untuk memilih dan mencari komputer domain untuk kriteria tertentu.
Dapatkan total jumlah komputer aktif (tidak terkunci) di Direktori Aktif:
(Get-ADComputer -Filter enabled -eq "true"). Hitung
Baca jumlah server Windows Server di domain:
(Dapatkan-ADComputer -Filter diaktifkan -eq "true" -dan OperatingSystem -Seperti '* Windows Server *').
Dapatkan daftar komputer dalam OU tertentu yang namanya dimulai dengan BuhPC:
Dapatkan-ADComputer -Filter Seperti-nama "BuhPC *" -SearchBase 'OU = Moskow, DC = winitpro, DC = loc' -Properti IPv4Address | Nama Format-tabel, DNSHostName, IPv4Address | ft-wrap-auto
Saat mencari dengan OU, Anda dapat menggunakan parameter tambahan -SearchScope 1, yang berarti Anda hanya perlu mencari di partisi root. Parameter -SearchScope 2 berarti pencarian rekursif untuk komputer di semua OU bersarang.
Pilih semua workstation yang menjalankan Windows 10:
Dapatkan-ADComputer -Filter OperatingSystem-like '* Windows 10 *'
Dapatkan daftar server dalam domain dengan versi OS, alamat IP, dan Paket Layanan yang diinstal:Dapatkan-ADComputer -Filter 'operatingsystem-like "* Windows server *" -dan diaktifkan -eq "true"' -Nama Properti, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Nama Properti, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | ft-wrap-auto
Outputnya adalah tabel yang indah dengan daftar Windows Server dalam AD.
Atribut -LDAPFilter memungkinkan Anda untuk menggunakan berbagai permintaan LDAP sebagai parameter dari cmdlet Get-ADComputer, misalnya:
Dapatkan-ADComputer -LDAPFilter "(name = * db *)" | ft
Pilih komputer yang terkunci di OU tertentu:
Dapatkan-ADComputer -filter * -SearchBase 'OU = Komputer, dc = winitpro, dc = loc' | Where-Object $ _. Diaktifkan -eq $ False
Untuk menghapus semua akun komputer dalam domain yang belum masuk ke domain selama lebih dari 6 bulan, Anda dapat menggunakan perintah:
get-adcomputer -properties lastLogonDate -filter * | di mana $ _. lastLogonDate -lt (get-date) .addmonths (-6) | Hapus-ADComputer
Hasil dari perintah Get-ADComputer dapat diunduh ke file teks:
Dapatkan-ADComputer -Filter OperatingSystem -Seperti '* Windows Server 2008 *' -Properties OperatingSystem | Pilih DNSHostName, OperatingSystem | Format-Tabel -AutoSize C: \ Script \ server_system.txt
Anda juga bisa mendapatkan pilihan komputer dan mengekspornya ke file CSV:
Dapatkan-ADComputer -Filter * -Property * | Select-Object Name, OperatingSystem, OperatingSystemServicePack | Ekspor-CSV Semua-Windows.csv -NoTypeInformation -Encoding UTF8
Atau dapatkan file laporan HTML dengan daftar komputer dan atribut komputer yang diperlukan:
Dapatkan-ADComputer -Filter OperatingSystem -Seperti '* Windows Server 2012 *' -Properti * | Select-Object Name, OperatingSystem | ConvertTo-Html | File C: \ ps \ ad_computer.html
Untuk melakukan tindakan tertentu dengan semua komputer dari daftar, Anda harus menggunakan loop Foreach. Dalam contoh ini, kami ingin mendapatkan daftar server di domain dengan model dan pabrikan:
$ Komputer = Dapatkan-ADComputer -Filter OperatingSystem -Seperti '* Windows Server *'
Foreach ($ Komputer dalam $ Komputer)
$ Hostname = $ Computer.Name
$ ComputerInfo = (Get-WmiObject -Nama pengguna $ Hostname Win32_ComputerSystem)
$ Pabrikan = $ Computer.Manufacturer
$ Model = $ Computer.Model
Host-Tulis "Nama: $ Hostname"
Host-Tulis "Produsen: $ Produsen"
Host-Tulis "Model: $ Model"
Tuan Rumah Tulis ""
$ Content = "$ Hostname; $ Manufacturer; $ Model"
Tambahkan konten -Nilai $ Konten -Path "C: \ PS \ ServersInfo.txt"
Atau Anda dapat menggunakan sintaks loop pendek. Misalkan kita perlu menjalankan perintah tertentu pada semua komputer dalam OU tertentu (dalam contoh ini, kami ingin menjalankan perintah untuk memperbarui pengaturan kebijakan grup di semua server):
get-adcomputer -SearchBase "OU = Server, DC = winitpro, DC = loc" -Filter * | % Invoke-Command -Computer $ _. Name -ScriptBlock gpupdate / force
Menggunakan Get-AdComputer dan skrip masuk PowerShell, Anda dapat mengontrol berbagai pengaturan komputer. Misalnya, saya memantau status agen SCCM di komputer pengguna. Ketika setiap komputer melakukan booting, ia menjalankan skrip log masuk yang, menggunakan Set-ADComputer, menyimpan status layanan ccmexec ke atribut komputer gratis - extensionAttribute10.
Kemudian, menggunakan perintah berikut, saya dapat menemukan komputer di mana layanan CCMExec hilang atau tidak berjalan:
get-adcomputer -filter extensionAttribute10 -ne "Agen SCCM: Menjalankan" -SearchBase “OU = Komputer, OU = MSK, DC = winitpro, DC = id” -properti dNSHostName, extensionAttribute10, LastLogonDate | select-object dNSHostName, extensionAttribute LastLogonDate