あなたは使用することができます Get-ADComputer Active Directoryドメイン内のコンピューターアカウントオブジェクト(サーバーおよびワークステーション)に関するさまざまな情報を取得するためのPowerShellコマンドレット。 これは、さまざまな基準でADコンピューターを検索するための最も便利なコマンドレットの1つです。
たとえば、ドメインに120日以上登録されていないActive Directory内のすべての非アクティブなコンピューターを検索し、これらのコンピューターアカウントを無効にすることがタスクであるとします。
Get-ADComputerコマンドレットを使用する前に、WindowsPowerShell用のActiveDirectoryモジュールをインストールしてインポートする必要があります。
Import-Module activedirectory
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Get-ADComputerを使用してコンピューターオブジェクトのプロパティを一覧表示する
Get-Helpコマンドを使用すると、通常どおりGet-ADComputerコマンドレットパラメーターに関するヘルプを取得できます。
Get-Help Get-ADComputer
AD for PowerShellモジュールのコマンドレットを使用してADから情報を取得するには、ドメイン管理者権限は必要ありません。 のメンバーである通常のユーザーアカウントを使用するだけで十分です。 ドメインユーザー また 認証されたユーザー グループ。
ドメイン内の特定のコンピューターアカウントに関する情報を取得するには、その名前を引数として指定します。 -身元 パラメータ:
Get-ADComputer -Identity SRV-DB01
DistinguishedName : CN=SRV-DB01,OU=Servers,OU=London,OU=UK,DC=woshub,DC=com DNSHostName : SRV-DB01.woshub.com Enabled : True Name : SRV-DB01 ObjectClass : computer ObjectGUID : 87654321-1234-5678-0000-123412341234 SamAccountName : SRV-DB01$ SID : S-1-5-21-123456780-1234567890-0987654321-1234 UserPrincipalName :
コマンドレットGet-ADComputerは、ADからComputerオブジェクトの基本的なプロパティのみを返しました。 ADドメインでの最後のコンピューター登録の時刻に関心がありますが、この情報は上記のコマンドの出力には表示されません。 このコンピュータオブジェクトで使用可能なすべてのプロパティをActiveDirectoryから一覧表示できます。
Get-ADComputer -Identity SRV-DB01 -Properties *
このコンピューター属性のリストは、Active Directoryユーザーとコンピューターコンソール(dsa.msc)の[属性エディター]タブでも利用できます。
Get-ADComputer -Filter * -Properties * | Get-Member
ご覧のとおり、このコンピューターのネットワークへの最終ログオン時刻は、コンピューターの属性で指定されています。 LastLogonDate – 2022年6月2日3:53:50AM。
Get-ADComputerコマンドレットを使用すると、コマンドの結果にコンピューターの任意のプロパティを表示できます。 の値のみを残して、すべての不要な情報を削除します 名前 と LastLogonDate 出力の属性。
Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize
そのため、1台のコンピューターのドメインに最後に登録したときのデータを受け取りました。 次に、コマンドを変更して、ドメイン内のすべてのコンピューターの最後のネットワーク登録の時刻に関する情報を表示するようにする必要があります。 それを行うには、交換してください -身元 に -フィルター *:
Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosize
コンピューター名とLastLogonData日付の2つのフィールドのみを含む単純なテーブルを取得しました。 ADからこのテーブルにComputerオブジェクトの他のフィールドを追加できます。
特定のOU(組織単位)内のコンピューターオブジェクトに関する情報を表示するには、–を使用します。SearchBase パラメータ:
Get-ADComputer -SearchBase ‘OU=Paris,DC=woshub,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize
を使用して、クエリ結果を最後のログオンの日付で並べ替えます 選別 コマンドレット:
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -Autosize
これで、ドメインコンピューターのリストと、それらがActiveDirectoryネットワークに最後にログオンした日付がわかりました。 ここで、20日以上使用されていないコンピューターアカウントを無効にします。
使用する Get-Date 変数で現在の日付の値を取得し、120日に減らすことができます。
$date_with_offset= (Get-Date).AddDays(-120)
結果の日付変数は、LastLogonDateフィールドでGet-ADComputerクエリのフィルターとして使用できます。
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -Autosize
そのため、ドメインネットワークに120日以上登録されていない非アクティブなコンピューターアカウントのリストがあります。 使用 無効にする-ADAccount また セット-ADComputer これらのアカウントを無効にするコマンド。
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -whatif
これで、非アクティブなすべてのコンピューターアカウントを無効にできます。
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $false
Get-ADComputerでの検索フィルターの使用
あなたは使用することができます -フィルター 特定の基準に基づいて複数のActiveDirectoryコンピューターを検索するためのGet-ADComputerコマンドレットの引数。 ここでは、ワイルドカードと論理比較演算子を使用できます。 フィルタとして使用できるのは、基本的なコンピュータオブジェクト属性のみです。
拡張コンピューター属性で検索フィルターを使用する必要がある場合は、Where-Objectパイプを介して指定できます。 この記事の次のセクションにはいくつかの例があります。
以下は、Get-ADComputerコマンドレットを使用して、特定の条件でドメイン内のコンピューターオブジェクトをクエリおよび検索するためのより便利な例です。
Active Directory内のすべてのアクティブな(ブロックされていない)コンピューターの総数を取得します。
(Get-ADComputer -Filter {enabled -eq "true"}).count
複数のフィルターを使用して、一度に複数のパラメーターでコンピューターを検索できます。 これを行うには、PowerShell論理比較演算子(-and、-eq、-ne、-gt、-ge、-lt、-le、-like、-notlike、-and、-orなど)を使用します。
ADドメイン内のWindowsServerホストの数を数えます。
(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }).count
名前がLonPCで始まる特定のOU内のコンピューターのリストを取得します。
Get-ADComputer -Filter {Name -like "LonPC*"} -SearchBase ‘OU=London,DC=woshub,DC=com’ -Properties IPv4Address | Format-table Name,DNSHostName,IPv4Address | ft -Wrap –Auto
OUで検索する場合は、追加のパラメーターを使用できます -SearchScope 1、つまり、ルートOUでのみ検索する必要があります。 ザ -SearchScope 2 オプションは、ネストされたすべてのOU内のコンピューターを再帰的に検索することを意味します。
Windows 10を実行しているすべてのワークステーションコンピューターを検索するには:
Get-ADComputer -Filter {OperatingSystem -like '*Windows 10*'}
OSバージョンのServicePackがインストールされているドメイン内のサーバーのリストを取得します。 およびIPアドレス:
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -Properties Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack,IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address| ft -Wrap –Auto
出力は、AD内のWindowsServerのリストを含む非常にクリーンなテーブルでした。
Get-ADComputerを使用したActiveDirectoryコミューターのクエリ:例
以下は、Get-ADComputerコマンドレットを使用して、特定の基準に基づいてドメイン内のコンピューターを選択する、より便利な例です。
ザ -LDAPFilter 属性を使用すると、Get-ADComputerコマンドレットのパラメーターとしてさまざまなLDAPクエリを使用できます。次に例を示します。
Get-ADComputer -LDAPFilter "(name=*db*)"|ft
特定のActiveDirectoryOUで無効になっているすべてのコンピューターオブジェクトを検索します。
Get-ADComputer -filter * -SearchBase ‘OU=Computers,OU=London,DC=woshub,dc=com’ | Where-Object {$_.enabled -eq $False}
ドメインに6か月以上ログインしていないすべてのコンピューターアカウントを削除するには、次のコマンドを使用できます。
Get-ADComputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputer
コンピューターのパスワードがActiveDirectoryで最後に変更された時刻を表示します。 デフォルトでは、パスワードは30日に1回コンピューターによって自動的に変更されます。 コンピューターのパスワードがADのパスワードと一致しない場合、コンピューターとドメインとの信頼関係は壊れます。
Get-ADComputer –Identity MUNPC321 -Properties PasswordLastSet
Get-ADComputerコマンドの結果は、プレーンテキストファイルにエクスポートできます。
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2016*' } -Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:Scriptserver_system.txt
コンピューターのリストを取得して、CSVファイルにエクスポートすることもできます。
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8
または、コンピューターと必要なプロパティのリストを含むHTMLレポートを取得します。
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2012*' } -Properties * | Select-Object Name,OperatingSystem | ConvertTo-Html | Out-File C:psad_computers_list.html
WMIまたはCIMを介してADコンピューターにリモートでクエリを実行できます。 たとえば、ドメイン内のすべてのサーバーのシリアル番号を表示するには、次のようにします。
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' | Select-Object Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue | Select-Object PSComputerName,SerialNumber}
結果のリストにあるすべてのコンピューターで特定のアクションを実行するには、 Foreach ループ。 この例では、モデルと製造元のドメイン内のWindowsServerホストのリストを取得します。
$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers)
{
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Host "Name: $Hostname"
Write-Host "Manufacturer: $Manufacturer"
Write-Host "Model: $Model"
Write-Host " "
$Content = "$Hostname;$Manufacturer;$Model"
Add-Content -Value $Content -Path "C:PSServersInfo.txt"
}
より短いループ構文を使用できます。 特定のOU内のすべてのコンピューターで特定のコマンドを実行する必要があるとします。 この例では、Invoke-Commandを使用して、すべてのサーバーでグループポリシーの更新コマンドを実行します。
get-adcomputer -SearchBase "OU=Servers,DC=woshub,DC=com" -Filter * | %{ Invoke-Command -Computer $_.Name -ScriptBlock {gpupdate /force} }
Get-ADComputerおよびPowerShellスタートアップスクリプトを使用すると、さまざまなコンピューター設定を制御したり、ADのコンピューター属性にさまざまな有用な情報を保存したりできます(たとえば、コンピューターの説明にユーザー名を追加できます)。
たとえば、ユーザーのコンピューター上のSCCMエージェントの状態を監視しています。 各コンピュータが起動すると、小さなログオンスクリプトが実行され、 ccmexec 未使用のコンピューター属性へのサービスステータス– extensionAttribute10。 次に、次のコマンドを使用して、CCMExecサービスが欠落しているか実行されていないコンピューターを見つけることができます。
get-adcomputer -filter {extensionAttribute10 -ne "SCCM Agent:Running"} -SearchBase “OU=Compters,OU=London,DC=woshub,DC=com” -properties dNSHostName,extensionAttribute10,LastLogonDate |select-object dNSHostName,extensionAttribute10,LastLogonDate
The post Get-ADComputer:PowerShellを使用してActiveDirectoryでコンピューターのプロパティを検索する appeared first on Gamingsym Japan.