spsman
Goto Top

FOR-Schleife Ausgabe funktioniert nicht

Hi,

ich würde gerne Dateien im Format "16_Letzen Zeichen Key_Rechnername.txt erstellen.
Script:
cscript "%programfiles(x86)%\Microsoft Office\Office16\OSPP.VBS" /dstatus   

Ausgabe (Datei):
Microsoft (R) Windows Script Host, Version 5.812
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

---Processing--------------------------
---------------------------------------
PRODUCT **
SKU ID:**
LICENSE NAME: Office 19, Office19HomeBusiness2019R_Retail edition
LICENSE DESCRIPTION: **Office 19**, RETAIL channel
BETA EXPIRATION: 01.01.1601
LICENSE STATUS:  ---LICENSED--- 
Last 5 characters of installed product **key: 1A2B3**
---------------------------------------
---------------------------------------
---Exiting-----------------------------
Diese Ausgabe muss ich irgendwie mit For- Schleifen die Zeilen durchlaufen und dann die Wörter in Variablen exportieren würde ich vermuten... Allerdings habe ich For-Schleifen in Batch noch nie so hinbekommen.

Mein Anfang:
Set/a  z=1
for /f "skip=7 tokens=3,4,8" %f in ('P:\01 Administration\Austausch MA\Robert\Office_Liz\16_WICHERT0519.txt') do   
( 
IF %%z=1(
Echo %%f %%g)
IF %%z=6(
Echo %%h)
set /a z+=1
)
pause

Das Programm beende sich ohne ausgabe...

Content-Key: 497792

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: aqui
aqui Sep 24, 2019 at 14:13:30 (UTC)
Goto Top
Vielleicht solltest du die IDs besser anonymisieren wenn man sie hier offen postet..?!
Member: SPSman
SPSman Sep 24, 2019 at 14:18:22 (UTC)
Goto Top
danke face-smile
Member: Crusher79
Crusher79 Sep 24, 2019 at 16:46:14 (UTC)
Goto Top
Hi,

wenn du dich mit Powershell anfreuden könntest, hätte man am Ende gleich ne saubere Tabelle. Z.B. hier: https://dashdot.de/2018/11/08/product-key-von-office-per-powershell-ausl ...

Soll heiss, du kannst die relevanten Inforamtionen am Schluß aufbereiten.

Wie viele PCs hast du Bzw. wie groß ist euer Portfolio? Software wie Lansweeper ist bist zu 100 Assets kostenlos und gerneirt automatisch CSV Dateien mit allen Lizenzen. Man kann später filtern und auch natürlich anonymisieren.

https://www.lansweeper.com/knowledgebase/freeware-and-trial-limitations/

Das Problem bei der Textdatei ist, dass es eine Textdatei ist... PS hat Objekte . Du hast gleich die richtige Struktur hinter. Wäre einfacher

mfg Crusher
Member: SPSman
SPSman Sep 24, 2019 at 18:59:03 (UTC)
Goto Top
Hi,

wir haben ca. 50 Geräte und vom office 2013 bis Office 2019 alles. wollte es als Anmeldescript laufen lassen ud dann in eine Lizenzübersichtstabelle überführen.

Lansweeper schau ich mir mal an. Problem nicht alle Geräte sind immer an netz (manche nur 1x im Monat....)

Aus der Textdatei eine CSV zu machen ist ja nciht schwer ;)
Member: SPSman
SPSman Sep 30, 2019 at 07:20:37 (UTC)
Goto Top
Hat noch jmd eine Idee warum meine For-Schleife nicht läuft?
Member: SPSman
SPSman Oct 07, 2019 at 12:18:47 (UTC)
Goto Top
Hi,

hat jemand eine Tipp wie ich die 5 Lizenzstellen extrahiert bekomme?

die Batch For-Schleife will bei mir einfach nicht laufen...
Member: SPSman
SPSman Oct 08, 2019 updated at 11:59:15 (UTC)
Goto Top
Hi,

hier meine Lösung:
1. Startscript:
IF EXIST "%programfiles(x86)%\Microsoft Office\Office16" (  
cscript "%programfiles(x86)%\Microsoft Office\Office16\OSPP.VBS" /dstatus >> "\\Serverordner\16_%computername%.txt"  
EXIT
)
IF EXIST "%programfiles(x86)%\Microsoft Office\Office15" (  
cscript "%programfiles(x86)%\Microsoft Office\Office15\OSPP.VBS" /dstatus >> "\\Serverordner\15_%computername%.txt"  
EXIT
)
IF EXIST "%programfiles(x86)%\Microsoft Office\Office13" (  
cscript "%programfiles(x86)%\Microsoft Office\Office13\OSPP.VBS" /dstatus >> "\\Serverordner\13_%computername%.txt"  
EXIT
)
IF EXIST "%programfiles(x86)%\Microsoft Office\Office12" (  
cscript "%programfiles(x86)%\Microsoft Office\Office12\OSPP.VBS" /dstatus >> "\\Serverordner\12_%computername%.txt"  
)

EXIT


2. Auswerte Script(PowerShell)
Set-Location -Path '\\Serverordner' # Ordnerpfad zuweisen  
$Dateien = gci |select Name # Dateinamen auslesen
$Trennzeichen="`t" # CSV-Trenn Definieren -TAB-  
#$Dateien

('Version','Rechner','LizNummer')-join $Trennzeichen |Out-File Uebersicht.csv # Header Definieren udn Datei erstellen  


foreach ($Datei in $Dateien){#Dateien durchlaufen
$Inhalt = get-content $Datei.Name #inhalt der aktuellen Datei auslesen
$zei = Select-String -Path $Datei.Name -SimpleMatch "---LICENSED---" -List | select LineNumber #Zeile für gültige Lizen finden nur Erster fund  
IF($zei){#Variable nicht NULL
    $Liz=$Inhalt[$zei.LineNumber].Substring(44,5)# die 5 Lizenzeichen Extrahieren
    $VersNr=$Datei.Name.Substring(0,2).Replace(".txt","")#Versionsnummer Extrahieren  
    ($VersNr,$Datei.Name.Substring(3).Replace(".txt",""),$Liz)-join $Trennzeichen|Out-File Uebersicht.csv -Append #CSAV-Zeile Erstelle un d in Datei schreiben  
    }
}

Gruß