Powershell-t használok egy naplófájl tartalmának lekéréséhez. Egy ismeretlen karakterláncot próbálok kivonni két ismert szó közé. Ezt több sorhoz kell megtennem, így több karakterláncot akarok keresni és visszaadni. Sok példát láttam és többféle módszert is kipróbáltam, de nem működnek.
A reg ex-et használtam, hogy leszűkítsem a napló számomra fontos soraira, de nem tudom kibontani a kívánt szöveget.
$fails = Select-String -Path 'C:\Users\user\Documents\wsyncmgr.log' -Pattern "^(?=.*?\bError\b)(?=.*?\bSoftware\b)(?=.*?\bLicense\b)(?=.*?\bTerms\b)(?=.*?\bnot\b)(?=.*?\bdownloaded\b).*$"
ez adja vissza:
C:\Users\user\Documents\wsyncmgr.log:7340:Failed to sync update 817ad2a6-3ca7-4fa2-aa32-9b906a2d9fdc. Error: The Microsoft Software License Terms have not been completely
downloaded and~~cannot be accepted. Source: Microsoft.UpdateServices.Internal.BaseApi.SoapExceptionProcessor.DeserializeAndThrow $$<SMS_WSUS_SYNC_MANAGER><10-23-2019
08:31:07.642+300><thread=5916 (0x171C)>
C:\Users\user\Documents\wsyncmgr.log:7341:Failed to sync update 87e13ecb-c669-43be-9e2a-01e567285031. Error: The Microsoft Software License Terms have not been completely
downloaded and~~cannot be accepted. Source: Microsoft.UpdateServices.Internal.BaseApi.SoapExceptionProcessor.DeserializeAndThrow $$<SMS_WSUS_SYNC_MANAGER><10-23-2019
08:31:07.643+300><thread=5916 (0x171C)>
stb..
Csak ki szeretném bontani a frissítés egyedi azonosítóját, hogy mindegyiket változóba helyezhessem, és később felhasználhassam.
$removeFirst = $fails -split "update "
$removeLast = $removeFirst -split ". Error:"
$removeLast[1]
a legközelebb van hozzám
C:\Users\user\Documents\wsyncmgr.log:7341:Failed to sync
87e13ecb-c669-43be-9e2a-01e567285031
The Microsoft Software License Terms have not been completely downloaded and~~cannot be accepted. Source: Microsoft.UpdateServices.Internal.BaseApi.SoapExceptionProcessor.DeserializeAndThrow $$<SMS_WSUS_SYNC_MANAGER><10-23-2019 08:31:07.643+300><thread=5916 (0x171C)>
C:\Users\user\Documents\wsyncmgr.log:7342:Failed to sync
c1a1ec21-8efc-4cd4-8e85-90a03fc7b0c8
The Microsoft Software License Terms have not been completely downloaded and~~cannot be accepted. Source: Microsoft.UpdateServices.Internal.BaseApi.SoapExceptionProcessor.DeserializeAndThrow $$<SMS_WSUS_SYNC_MANAGER><10-23-2019 08:31:07.644+300><thread=5916 (0x171C)>
C:\Users\user\Documents\wsyncmgr.log:7343:Failed to sync
09dc7113-fa44-4ca8-9d70-ec254d4d2f04
The Microsoft Software License Terms have not been completely downloaded and~~cannot be accepted. Source: Microsoft.UpdateServices.Internal.BaseApi.SoapExceptionProcessor.DeserializeAndThrow $$<SMS_WSUS_SYNC_MANAGER><10-23-2019 08:31:07.644+300><thread=5916 (0x171C)>
de ez csak az általam megadott szavakat távolítja el, a többit pedig külön sorba helyezi. akkor a tömb csak az általam megadott sort adja vissza, de többszöröst akarok. Mindent el akarok törölni az "update" előtt és mindent "az" után. Hiba:" minden sorhoz csak a "09dc7113-fa44-4ca8-9d70-ec254d4d2f04" marad.
minden segítséget szívesen vennék, ha nem jó a regex
Failed to sync update 817ad2a6-3ca7-4fa2-aa32-9b906a2d9fdc. Error: The Microsoft Software License Terms have not been completely downloaded and~~cannot be accepted. Source: Microsoft.UpdateServices.Internal.BaseApi.SoapExceptionProcessor.DeserializeAndThrow $$<SMS_WSUS_SYNC_MANAGER><10-23-2019 08:31:07.642+300><thread=5916 (0x171C)>
23.10.2019$fails
tartalmazza az általad felsorolt kimenetet a returns: alatt, akkor ennek működnie kell, és csak az azonosítókat jeleníti meg. 23.10.2019$fails
az újsor karakterekkel elválasztott karakterláncok tömbje. Ha a$fails
egyetlen karakterlánc, akkor hozzá kell adnia a-AllMatches
paramétert aSelect-String
-hez. Alapvetően kimásoltam és beillesztettem, amit adtál. 23.10.2019