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