Powershell使用C#实现缩写路径
支持2.0及以后版本。
某些时候报表中的路径字符串是非常长的。如果需要你也可以缩写它,但是这样路径就失去的使用价值。最好是使用内置的API它可以灵活的缩略路径。
接下来要告诉你如何在Powershell脚本中使用C#代码:
$newType=@'
usingSystem;
usingSystem.Text;
usingSystem.Runtime.InteropServices;
namespaceWindowsAPILib
{
publicclassHelper
{
[DllImport("shlwapi.dll",CharSet=CharSet.Auto,SetLastError=true)]
internalstaticexternboolPathCompactPathEx(System.Text.StringBuilderpszOut,stringpszSrc,Int32cchMax,Int32dwFlags);
publicstaticstringCompactPath(stringPath,intDesiredLength)
{
StringBuildersb=newStringBuilder(260);
if(PathCompactPathEx(sb,Path,DesiredLength+1,0))
{returnsb.ToString();}
else
{returnPath;}
}
}
}
'@
Add-Type-TypeDefinition$newType
一旦你执行这段代码,就会产生一个新的.Net类,其中会增加一个新的静态方法“CompactPath”,现在你就可以这样使用它了:
PS>$pshome C:\Windows\System32\WindowsPowerShell\v1.0
PS>[WindowsAPILib.Helper]::CompactPath($pshome,12) C:\W...\v1.0
PS>[WindowsAPILib.Helper]::CompactPath($pshome,18) C:\Windows...\v1.0
PS>[WindowsAPILib.Helper]::CompactPath($pshome,22) C:\Windows\Sys...\v1.0