もっと詳しく

あなたは使用することができます Get-ADComputer Active Directoryドメイン内のコンピューターアカウントオブジェクト(サーバーおよびワークステーション)に関するさまざまな情報を取得するためのPowerShellコマンドレット。 これは、さまざまな基準でADコンピューターを検索するための最も便利なコマンドレットの1つです。

たとえば、ドメインに120日以上登録されていないActive Directory内のすべての非アクティブなコンピューターを検索し、これらのコンピューターアカウントを無効にすることがタスクであるとします。

Get-ADComputerコマンドレットを使用する前に、WindowsPowerShell用のActiveDirectoryモジュールをインストールしてインポートする必要があります。

Import-Module activedirectory

ヒント。 バージョンPowerShell3.0(Windows Server 2012で導入)以降では、次のコンポーネントがインストールされている場合、このモジュールはデフォルトでインポートされます:リモートサーバー管理ツール->役割管理ツール->ADDSおよびADLDSツール->ActiveDirectoryモジュールWindowsPowerShell。 デスクトップクライアント(Windows 11または11)でGet-ADComputerコマンドレットを使用するには、RSATをダウンロードしてインストールし、コントロールパネルからまたは次のコマンドを使用してAD-Powershellモジュールを有効にする必要があります。

Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Get-ADComputerを使用してコンピューターオブジェクトのプロパティを一覧表示する

Get-Helpコマンドを使用すると、通常どおりGet-ADComputerコマンドレットパラメーターに関するヘルプを取得できます。

Get-Help Get-ADComputer

Get-ADComputerコマンドレット構文ヘルプ

AD for PowerShellモジュールのコマンドレットを使用してADから情報を取得するには、ドメイン管理者権限は必要ありません。 のメンバーである通常のユーザーアカウントを使用するだけで十分です。 ドメインユーザー また 認証されたユーザー グループ。

ドメイン内の特定のコンピューターアカウントに関する情報を取得するには、その名前を引数として指定します。 -身元 パラメータ:

Get-ADComputer -Identity SRV-DB01

Get-ADComputer -Identity

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 *

PowerShellを使用してすべての広告コンピューターのプロパティを表示する

このコンピューター属性のリストは、Active Directoryユーザーとコンピューターコンソール(dsa.msc)の[属性エディター]タブでも利用できます。

ADUCコンソールのActiveDirectoryコンピューター属性エディター

Get-Memberを使用すると、ADのComputerクラスのすべてのプロパティのリストを取得できます。

Get-ADComputer -Filter * -Properties * | Get-Member

ご覧のとおり、このコンピューターのネットワークへの最終ログオン時刻は、コンピューターの属性で指定されています。 LastLogonDate2022年6月2日3:53:50AM

Get-ADComputerコマンドレットを使用すると、コマンドの結果にコンピューターの任意のプロパティを表示できます。 の値のみを残して、すべての不要な情報を削除します 名前LastLogonDate 出力の属性。

Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize

PowerShellget-adcomputerを使用して広告コンピューターの最終ログオン日を表示する

そのため、1台のコンピューターのドメインに最後に登録したときのデータを受け取りました。 次に、コマンドを変更して、ドメイン内のすべてのコンピューターの最後のネットワーク登録の時刻に関する情報を表示するようにする必要があります。 それを行うには、交換してください -身元 -フィルター *

Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosize

ADコンピューターのLastLogonDate-テーブルビュー

コンピューター名と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

LastLogonDateで並べ替え

これで、ドメインコンピューターのリストと、それらが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 これらのアカウントを無効にするコマンド。

ヒント初めて、コマンドの結果をテストすることをお勧めします -仮に スイッチ。ADオブジェクトを変更せずにコマンドを実行した場合に何が起こるかを確認できます。

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

ノート。 また、Search-ADAccountコマンドレットを使用して、ブロックされた、無効にされた、および非アクティブなコンピューターとドメインユーザーのリストを取得できます。

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

Get-ADComputerは、広告内のデスクトップまたはサーバーオブジェクトをカウントします

名前が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のリストを含む非常にクリーンなテーブルでした。

PowerShellを使用してActiveDirectoryコンピューターのプロパティを一覧表示する

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

広告-コンピュータオブジェクトの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.