windows 7

$ComputerName = $env:COMPUTERNAME

# Get IP Address (Compatible with Windows 7)
$IPAddress = (ipconfig |
Select-String "IPv4").ToString().Split(":")[-1].Trim()

# Search Tekla / Trimble
$TeklaPrograms = Get-ItemProperty `
HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* ,
HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* `
-ErrorAction SilentlyContinue |
Where-Object {
    $_.DisplayName -match "Tekla|Trimble"
} |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

Write-Host "=============================="
Write-Host "Computer Name : $ComputerName"
Write-Host "IP Address    : $IPAddress"
Write-Host "=============================="

if ($TeklaPrograms) {
    Write-Host "Tekla / Trimble FOUND"
    $TeklaPrograms | Format-Table -AutoSize
} else {
    Write-Host "Tekla / Trimble NOT FOUND"
}

182.PNG

$ComputerName = $env:COMPUTERNAME

$IPAddress = Get-NetIPAddress |
Where-Object {
    $_.AddressFamily -eq "IPv4" -and
    $_.IPAddress -notlike "127.*" -and
    $_.PrefixOrigin -ne "WellKnown"
} |
Select-Object -ExpandProperty IPAddress -First 1

$TeklaPrograms = Get-ItemProperty `
HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* ,
HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* `
-ErrorAction SilentlyContinue |
Where-Object {
    $_.DisplayName -match "Tekla|Trimble"
} |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

Write-Host "=============================="
Write-Host "Computer Name : $ComputerName"
Write-Host "IP Address    : $IPAddress"
Write-Host "=============================="

if ($TeklaPrograms) {
    Write-Host "Tekla / Trimble FOUND"
    $TeklaPrograms | Format-Table -AutoSize
} else {
    Write-Host "Tekla / Trimble NOT FOUND"
}
Get-ItemProperty `
HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* ,
HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* |
Where-Object {
    $_.DisplayName -match "Tekla|Trimble"
} |
Select DisplayName, DisplayVersion, InstallDate
$computers = Get-Content .\\computers.txt
$results = @()

foreach ($pc in $computers) {
    try {
        $items = Invoke-Command -ComputerName $pc -ScriptBlock {
            $paths = @(
                "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*",
                "HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*"
            )

            Get-ItemProperty $paths -ErrorAction SilentlyContinue |
            Where-Object { $_.DisplayName -match "Tekla|Trimble" } |
            Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
        }

        foreach ($i in $items) {
            $results += [PSCustomObject]@{
                Computer       = $pc
                Program        = $i.DisplayName
                Version        = $i.DisplayVersion
                Publisher      = $i.Publisher
                InstallDate    = $i.InstallDate
                Status         = "Found"
            }
        }

        if (-not $items) {
            $results += [PSCustomObject]@{
                Computer = $pc
                Program  = ""
                Version  = ""
                Publisher = ""
                InstallDate = ""
                Status = "Not Found"
            }
        }
    }
    catch {
        $results += [PSCustomObject]@{
            Computer = $pc
            Program  = ""
            Version  = ""
            Publisher = ""
            InstallDate = ""
            Status = "Connection Failed"
        }
    }
}

$results | Export-Csv .\\Tekla_Audit_Result.csv -NoTypeInformation -Encoding UTF8

ถ้าต้องการ list รายชื่อเครื่องคอมพิวเตอร์ใน Active Directory แล้ว export เป็น computers.txt

ใช้ PowerShell นี้ครับ:

Get-ADComputer -Filter * |
Select-Object -ExpandProperty Name |
Out-File C:\\Audit\\computers.txt

ถ้าต้องการเฉพาะเครื่องที่ Online:

Get-ADComputer -Filter * |
Select-Object -ExpandProperty Name |
ForEach-Object {
    if (Test-Connection $_ -Count 1 -Quiet) {
        $_
    }
} | Out-File C:\\Audit\\computers.txt