多数事情可以由 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
|