Letzte Arbeitslösungslogik
Dieses Skript berücksichtigt das tatsächliche Layout der versioninfo-Struktur und arbeitet mit einem zusätzlichen Parameter (der 1 oder 2 nahe dem Ende) für die Parität der Eingabezeichenfolge.
$versioninfostate = 0 (Get-Content "hello.exe" -Encoding Unicode) -split {$_ -lt " "} | % { if ($versioninfostate -eq 1) { write-host $_ } if ($versioninfostate -gt 0) { $versioninfostate = $versioninfostate - 1} if ($_ -match "ProductHash$") { $versioninfostate = 2 }}
Entwicklung des Final Solution Path
- "Der letzte Befehl kann nur einige Versionszeichenfolgen erhalten, andere jedoch nicht."
Verwenden Sie
Select *
diese Option, um zusätzliche Eigenschaften zu erhalten, die nicht mit angezeigt werdenFormat-List
- "Holen Sie sich alle VersionInfo-Strings aus einer EXE-Datei"
Rohr der exe über zu
% {$_.VersionInfo}
verwenden,Foreach-Object
anstattWhere-Object
mit$_.VersionInfo
Einschießen auf nur seine Eigenschaften in einer Liste / Datensatz- Msgstr "Kann nicht beliebige Eigenschaftsnamen auflösen"
- „Wie pro Ihre letzte Änderung zeigt Sie einen Dritten Dienstprogramm installiert von jemandem Sie in einem Kommentar zu empfehlen, dass die Software aus dem Jahr 2010 zu sein scheint und die speziell für Windows 7. In jedem Fall entworfen, so scheint es, eine zusätzliche Eigenschaft hinzufügen namens
ProductHash
per Ihr letzter Update-Screenshot. "
Verwenden Sie
Get-FileHash
und erhalten Sie dann explizit den Hashwert des Exes auf diese Weise
Nachfolgend finden Sie eine PowerShell-Logik. . .
- Verwendet
%
statt?
die ausführbare Datei durch setzen Foreach-Object stattWhere-Object
- Verwendet
Select *
stattFormat-List
um sicherzustellen, dass das Variablenobjekt einenSystem.Object
Basis-Typ hat und nicht einSystem.Array
asFormat-List
erstellt - Legt eine Variable mit dem expliziten Eigenschaftswert fest, wie Sie sie in der
VersionInfo
Liste angeben - Verwendet Get-FileHash, um den Exe-Hashwert abzurufen
Power Shell
$t = get-childitem ".\executablename" | % {$_.VersionInfo} | Select * $Hash = (Get-FileHash $Exe).Hash $t.<Property>, $Hash
Ausgabebeispiel
Coolest - www.CoolTool.com 30E14E358DD76EC712CCC6B5FD1E79DDEAA653E682E968DA0229BE13BED2B991
VersionInfo-Listenobjekt
PS C:\WINDOWS\system32> get-childitem ".\executablename" | % {$_.VersionInfo} | Select * FileVersionRaw : 1.80.0.0 ProductVersionRaw : 1.80.0.0 Comments : CompanyName : Coolest - www.CoolTool.com FileBuildPart : 0 FileDescription : Program - Cool memory analyzer FileMajorPart : 1 FileMinorPart : 80 FileName : C:\Users\User\Desktop\Coolio.exe FilePrivatePart : 0 FileVersion : 1.80 InternalName : TooCool IsDebug : False IsPatched : False IsPrivateBuild : False IsPreRelease : False IsSpecialBuild : False Language : English (United States) LegalCopyright : Copyright © 1985-2099 Michael Jordan LegalTrademarks : OriginalFilename : Coolio PrivateBuild : ProductBuildPart : 0 ProductMajorPart : 1 ProductMinorPart : 80 ProductName : TooCool ProductPrivatePart : 0 ProductVersion : 1.80 SpecialBuild :
Binären String-Inhalt durchsuchen
Hinweis: So wie die cygwin
cli string
, grep
und andere Befehle, um die binäre der Datei suchen die Zeichenfolge übereinstimmen "ProductHash"
, können Sie dies aus ähnlichen Powershell - Befehle als auch lesen.
$Match = (Get-Content ".\executablename") -replace "`0", "" | % } $Line = (Get-Content ".\executablename") -replace "`0", "" | % } | % } $Line = $Line -replace "[\W]", "`r`n" | % } $MisMatch = $Line.Replace($Match, "") Write-Output "$Match`: $MisMatch"
Beispielausgabe
ProductHash: Hello_World_abcdefgh2