-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprinterInventory.ps1
More file actions
29 lines (26 loc) · 1.5 KB
/
printerInventory.ps1
File metadata and controls
29 lines (26 loc) · 1.5 KB
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
$inventory_File = "C:\tools\printerInventoryFile.csv" # Output File Location
$printer_List = Get-Printer | Where-Object { $_.PortName -like "192.168*"} # Listing Network Printers
# Creating Inventory File if it's Missing
if(-not(Test-path $inventory_File -PathType leaf))
{
write-host "[!] Inventory File Missing. Generating Log File"
{} | Select "end_User","workstation_Name","printer_Name","printer_IP","printer_Device" | Export-Csv $inventory_File
}
$printer_data = Import-Csv $inventory_File # Importing Inventory File
$existing_data = $printer_data # Copying Inventory File into a separate variable for comparing later on
$end_User = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name.split("\")[1] # Had Issues with Escapes. Removes Domain \
# Logging Printer Inventory
foreach ($installed_printer in $printer_List){
if($existing_data.printer_Name.Contains($installed_printer.Name) -and $existing_data.printer_Name.Contains($installed_printer.Name)) # Checking Printer Isn't Already Inventoried
{
write-host "Printer is already inventoried, excluding from inventory."
} else
{
$printer_data.end_User = [Security.Principal.WindowsIdentity]::GetCurrent().name
$printer_data.workstation_Name = [System.NET.DNS]::GetHostByName('').hostname
$printer_data.printer_Name = $installed_printer.Name
$printer_data.printer_IP = $installed_printer.PortName
$printer_data.printer_Device = $installed_printer.DriverName
$printer_data | Export-CSV $inventory_File –Append # Appending Inventory File
}
}