1
PowerShellでインストールされる実行ファイルが32ビットか64ビットかどうかを確認する方法?PowerShellでインストールする実行ファイルが32ビットか64ビットかどうかを確認する方法はありますか?
これを行うためにpowershellには事前定義された関数がありますか?
PowerShellでインストールされる実行ファイルが32ビットか64ビットかどうかを確認する方法?PowerShellでインストールする実行ファイルが32ビットか64ビットかどうかを確認する方法はありますか?
これを行うためにpowershellには事前定義された関数がありますか?
多くの先進的なPowerShellパーサーはPE headerです。
function Is64bit([string]$path) {
try {
$stream = [IO.File]::OpenRead($path)
} catch {
throw "Cannot open file $path"
}
$reader = [IO.BinaryReader]$stream
if ($reader.ReadChars(2) -join '' -ne 'MZ') { throw 'Not an executable' }
$stream.position = 0x3C
$stream.position = $reader.ReadUInt32() # go to COFF
if ($reader.ReadUInt32() -ne 0x00004550) { throw 'Not a PE executable' }
return $reader.ReadUInt16() -eq 0x8664 # machine type
}
使用法:
Is64bit C:\Windows\explorer.exe
ここだけMachine Typeフィールドを読み込み、簡単な関数です