winlicli
Goto Top

Powershellskript zum abfragen der TeamViewer ID und der Umrechung von Hex in Dec

Hallo zusammen,

ich möchte gerne die TeamViewer ID´s von unseren Domänen-PC´s auslesen lassen.

Habe im Netz schon einige Beträge dazu gelesen, aber so die Lösung für das was ich genau möchte war nicht dabei.

Ich würde ein Skript (cmd oder PS) schreiben, um dann in die Reg von Windows unter folgendem Pfad zuschauen:

reg query HKLM\Software\WOW6432Node\Teamviewer /v ClientID

Das ganze würde ich mir dann auf eine Freigabe in eine TXT umleiten lassen.

Das Problem ist, ich kriege in der PS oder CMD das Ergebnis als Hexazahl angezeigt (in der GUI steht die ID mit dabei)

Gibt es eine Möglichkeit auch die Dez in der Shell anzuzeigen bzw. die HEX in DEZ umrechnen zu lassen?

Eventuell kann mir da jemand helfen oder es hat jemand eine bessere Idee.

Lg und Danke.

Content-ID: 341214

Url: https://administrator.de/contentid/341214

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

Marabunta
Marabunta 21.06.2017 aktualisiert um 11:40:16 Uhr
Goto Top
(Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\TeamViewer").ClientID  
Damit wird direkt die richtige Zahl ausgeben
el-capitano86
el-capitano86 21.06.2017 aktualisiert um 12:46:29 Uhr
Goto Top
Moin.

(Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\TeamViewer").ClientID

Bei mir passiert dann folgendes:
2017-06-21 12_41_57-rechner
Marabunta
Marabunta 21.06.2017 um 12:57:51 Uhr
Goto Top
Stimmen die Teamviewer Versionen aus dem Key und der laufenden Software überein?
Ich lese gerade, dass Teamviewer gerne mehrere an teilweise anderen Orten erstellt.
Ggf. Neuzuweisung wegen MAC-Adressänderung
Genau kann ich es nicht sagen, evtl. die Registry nach ClientID absuchen und den gültigen Ort finden.
el-capitano86
el-capitano86 21.06.2017 um 13:10:18 Uhr
Goto Top
@@Marabunta

Ich habe Teamviewer tatsächlich in zwei Versionen. Der Rückgabewert entspricht der ID der aktuellsten Version, geöffnet ist Version 9.
Die ID aus der Anwendung versteckt sich in einem Unterschlüssen "Version9"
2017-06-21 13_09_01-registrierungs-editor

Danke schön!
Cachemaster
Cachemaster 21.06.2017 um 13:44:34 Uhr
Goto Top
Mich würde das fertige Script interessieren face-smile

Fange gerade an mich mit der Powershell zu befassen und einen ersten Fuss reinzubekommen.


1. Du wirst das Script dann ja sicher Remote ausführen, wenn ja wie gehst du das an ?

2. Was für Informationen packst du da noch alles rein um die IDs zuordnen zu können ? (Hostname, IP, MAC)


Jemand einen Tipp für mich wie man am besten mit Powershell (ohne Scripterfahrung) anfängt ?

Danke
Marabunta
Marabunta 21.06.2017 um 14:03:36 Uhr
Goto Top
vorhandene batch dateien in powershell übersetzen. damit habe ich angefangen
AnkhMorpork
AnkhMorpork 22.06.2017 um 08:07:59 Uhr
Goto Top
Zitat von @Cachemaster:

Fange gerade an mich mit der Powershell zu befassen und einen ersten Fuss reinzubekommen.

1. Du wirst das Script dann ja sicher Remote ausführen, wenn ja wie gehst du das an ?


Hier mal ein Beispiel zum Thema Remote (letztes Windows-Update auslesen):

$Computer = ''  
$User = ''  
$pw  = ''  
$NoResponseList = @()
$Computers = @()

#Computer-Liste aus AD auslesen
$ComList = Get-ADComputer -Filter * -SearchBase "OU=<DeineOU>,DC=<DeinDC>" | Sort-Object -property name  
ForEach($Guy in $ComList)
{$Computers += $Guy.Name}

Try 
{
	$pw = Read-Host PW -asSecureString | ConvertFrom-SecureString -ErrorAction Stop
	$Cred = New-Object -Typename System.Management.Automation.PSCredential $User,($PW | ConvertTo-SecureString)
	Remove-Variable pw
}
Catch 
{
	Write-Host  -ForeGroundColor red "Error occured: " $PSItem.Exception.GetType().FullName "-->" $PSItem.Exception.Message `n  
	If(Test-Path variable:pw) {Remove-Variable pw}
	Break
}

Write-Host 'Checking Windows latest update ...' -ForegroundColor white  

ForEach($Computer in $Computers.Trim())
{
	If(Test-Connection -ComputerName $Computer -Count 1 -ErrorAction SilentlyContinue)
	{
		Try
		{
			$Session = New-PSSession -Computername $Computer -Credential $Cred -ErrorAction Stop
			$Import = Import-PSSession -Session $Session -Commandname Get-ItemProperty, Get-Date -Prefix Remote # "IMPLICIT REMOTING" 
			Try
			{
				$ErrorActionPreference = 'Stop'  

				$Sec = Get-RemoteItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install" -Name "LastSuccessTime" | Select -ExpandProperty "LastSuccessTime"	   
				    	
				$LastUpdateTime = Get-Date($Sec) -Format G
				
				Write-Host "Last Windows update $Computer $LastUpdateTime"  
			} #Try

			Catch	
			{
				$LastUpdateTime=0
				return $LastUpdateTime
			} #Catch
			
			
		} #EndTry
		
		Catch {Write-Host  -ForeGroundColor red "Error occured: " $PSItem.Exception.GetType().FullName "-->" $PSItem.Exception.Message `n}  
		
		Finally {If(Test-Path variable:pw) {Remove-Variable pw}; If ($Session.State -eq "Opened") {Remove-PSSession $Computer}}  
		
	} #EndIf_TestConnection

	Else {$NoResponseList += $Computer}

} #End_ForEach

If ($NoResponseList.Length -gt 0)
{Write-Host "No response from $NoResponseList" -ForegroundColor red}  

Und ja, ich weiß - das geht viiiiiiel kürzer.
Matrix1999
Matrix1999 22.02.2019 um 15:47:20 Uhr
Goto Top
Schon etwas älter das Ganze hier, aber hier ein Beispiel via CMD, welches aber nicht in eine TXT schreibt. Dafür wird die ID als lokale, dauerhafte Systemvariable geschreiben, welche man dann anders inventarisieren könnte. Oder man schreibt das Skript um und lässt es in eine TXT ausgeben.
Läuft aktuell gut bis hoch zur TV Version 14 und den neuen 10 stelligen IDs!

echo off
IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" GoTo 64Bit  

:32Bit
REM HEX der TV ID ermitteln in 32 Bit Systemen
reg query "HKLM\Software\Teamviewer" /V "ClientID" | find /i "0x" > %windir%\system32\Teamviewer.txt  
goto allPC

:64Bit
REM HEX der TV ID ermitteln in 64 Bit Systemen
reg query "HKLM\Software\wow6432node\Teamviewer" /V "ClientID" | find /i "0x" > %windir%\system32\Teamviewer.txt  

:allPC
c:
cd\
cd %windir%\system32
REM HEX Wert in der TXT in Variable schreiben.
set /p teamviewer=<Teamviewer.txt
REM HEX Wert in der TXT in Variable schreiben und dabei vorne 29 Zeichen abschneiden.
set "teamviewer=%teamviewer:~29%"  
REM HEX Wert in der Variable in Dezimal wandeln.
set /a teamviewer=%teamviewer%
REM Dezimal Wert in feste Systemvariable schreiben.
setx /m TeamViewer %teamviewer%
exit

Das Skript via GPO im Computerteil ausführen lassen. Idealerweise vll vorher via GPP nach lokal kopieren lassen und dann den lokalen Pfad in der GPO nutzen.

Viel Spaß damit!