欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Powershell使用C#实现缩写路径

程序员文章站 2022-03-31 09:16:50
支持2.0及以后版本。 某些时候报表中的路径字符串是非常长的。如果需要你也可以缩写它,但是这样路径就失去的使用价值。最好是使用内置的api它可以灵活的缩略路径。 接下来...

支持2.0及以后版本。

某些时候报表中的路径字符串是非常长的。如果需要你也可以缩写它,但是这样路径就失去的使用价值。最好是使用内置的api它可以灵活的缩略路径。

接下来要告诉你如何在powershell脚本中使用c#代码:

复制代码 代码如下:

$newtype = @'
using system;
using system.text;
using system.runtime.interopservices;
 
namespace windowsapilib
{
    public class helper
    {
        [dllimport("shlwapi.dll", charset = charset.auto, setlasterror = true)]
        internal static extern bool pathcompactpathex(system.text.stringbuilder pszout, string pszsrc, int32 cchmax, int32 dwflags);
 
        public static string compactpath(string path, int desiredlength)
        {
            stringbuilder sb = new stringbuilder(260);
            if (pathcompactpathex(sb, path, desiredlength + 1, 0))
            { return sb.tostring(); }
            else
            { return path; }
        }
    }
}
'@
 
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