PowerShell 技能连载 - 查看文件对应的可执行程序

多数事情可以由 PowerShell 的内置指令完成,但是那还不够,您总是可以借助内置的 Windows API。例如,如果您想查看某个文件关联的应用程序,请试试这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function Get-ExecutableForFile
{
param
(
[Parameter(Mandatory)]
[string]
$Path
)

$Source = @"

using System;
using System.Text;
using System.Runtime.InteropServices;
public class Win32API
{
[DllImport("shell32.dll", EntryPoint="FindExecutable")]

public static extern long FindExecutableA(string lpFile, string lpDirectory, StringBuilder lpResult);

public static string FindExecutable(string pv_strFilename)
{
StringBuilder objResultBuffer = new StringBuilder(1024);
long lngResult = 0;

lngResult = FindExecutableA(pv_strFilename, string.Empty, objResultBuffer);

if(lngResult >= 32)
{
return objResultBuffer.ToString();
}

return string.Format("Error: ({0})", lngResult);
}
}

"@

Add-Type -TypeDefinition $Source -ErrorAction SilentlyContinue
[Win32API]::FindExecutable($Path)
}

以下是使用这个函数的方法:

1
PS> Set-EnvironmentVariable -Name test -Value 123 -Target User

PowerShell 技能连载 - 查看文件对应的可执行程序

http://blog.vichamp.com/2018/07/03/finding-executable-for-file/

作者

吴波

发布于

2018-07-03

更新于

2022-07-06

许可协议

评论