PSScript: Определение архитектуры

Нашел скрипт в просторах интернета, который определяет архитектуру (битность) библиотеки и немного доработал его.

function Get-FilePlatform
{
    param
    (
        [ValidateScript({$_.Exists})]
        [System.IO.FileInfo]$FileName
    )
    [int]$PE_POINTER_OFFSET = 60;            
    [int]$MACHINE_OFFSET = 4;
    [byte[]]$Data = New-Object byte[] 4096;
    [IO.Stream]$Stream = New-Object IO.FileStream($FileName, [IO.FileMode]::Open, [IO.FileAccess]::Read)
    $Stream.Read($Data, 0, $Data.Length) | Out-Null
    [int]$PE_HEADER_ADDR = [BitConverter]::ToInt32($Data, $PE_POINTER_OFFSET);
    [int]$MachineUint = [BitConverter]::ToUInt16($Data, $PE_HEADER_ADDR + $MACHINE_OFFSET);
    switch($MachineUint)
    {
        0x0000 {"Native"}
        0x014c {"x86"}
        0x0200 {"Itanium"}
        0x8664 {"x64"}
    }
    $Stream.Close()
}
Реклама