This is actually a good example of how to start the creation of a PowerShell tool. I am going to expand this tool to make it more flexible and to allow the user to ask for a variety of days as opposed to one. Also, we will output the information in a reusable format.
This command essentially filters the output of Get-ADComputer as long as you include the –Properties LastLogonDate parameter when using Get-ADComputer. The output is unaltered from Get-ADComputer so you can then pipe it to what ever other command that you need.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
100
101
102
103
104
|
Function Get-StaleClients
{
[CmdletBinding()]
Param (
[parameter(Mandatory=$true,
ValueFromPipeline=$true)]
[Microsoft.ActiveDirectory.Management.ADComputer[]]
$Computer,
[parameter(Mandatory=$true)]
[INT]
$Days
)
BEGIN
{
# Create a .NET object with the cutoff
# date in the past
$DaysPast = (Get-Date -hour 0 -Minute 0).AddDays(-$Days)
} # END: BEGIN Block
PROCESS
{
Foreach ($C in $Computer)
{
# Verify that the object has a LastLogonDate property.
If ($C.LastLogonDate -ne [System.DateTime])
{
Write-Warning "LastLogonDate property not in the object."
}
Else
{
$C |
Where-Object {$_.LastLogonDate -le $DaysPast}
}
} # END: Foreach ($C in $ComputerName)
} # END: PROCESS BLOCK
END {} # END: END Block
<#
.SYNOPSIS
Filters all Active Directory computer objects that are past to it and determines
if those clients have logged in within a specific number of days.
.DESCRIPTION
Filters all Active Directory computer objects that are past to it and determines
if those clients have logged in within a specific number of days.
.PARAMETER Computer
The Computer object from Active Directory to examine.
.PARAMETER Days
The number of days since the last logon.
.INPUTS
Microsoft.ActiveDirectory.Management.ADComputer
.EXAMPLE
Get-ADComputer -Filter * -Properties LastLogonDate | Get-StaleClients -Days 15
Filters all computer objects that have not logged in in the past 15 days.
.NOTES
===============================================================================
== Cmdlet: Get-StaleClients ==
== Author: Jason A. Yoder ==
== Company: MCTExpert of Arizona ==
== Date: 2015APR06 ==
== Copyright: All rights reserved. ==
== Version: 1.0.0.0 ==
== Legal: The user assumes all responsibility and liability for the usage of ==
== this PowerShell code. MCTExpert of Arizona, Its officers, shareholders, ==
== owners, and their relatives are not liable for any damages. As with all ==
== code, review it and understand it prior to usage. It is recommended that ==
== this code be fully tested and validated in a test environment prior to ==
== usage in a production environment. ==
== ==
== Does this code make changes: NO ==
===============================================================================
#>
} # END: Function Get-StaleClients
#Get-ADComputer -Filter * -Properties LastLogonDate|
# Get-StaleClients -Days 15
#Get-ADComputer -Filter * |
# Get-StaleClients -Days 15
Get-Help Get-StaleClients -Full
No comments:
Post a Comment