在PowerShell中可以通过虚拟驱动器来非常方便的访问函数,别名,注册表,证书等资源。能不能将个人和系统的一些特殊文件夹也加进虚拟驱动器中呢?这也是本篇的主题了。首先来看下默认的驱动器:
PS C:> Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Alias Alias C 63.64 109.06 FileSystem C: cert Certificate E 204.74 88.23 FileSystem E: Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan Z FileSystem Z:
上面提到的特殊文件夹诸如,桌面,我的图片,我的音乐,我的视频,Appdata,安装程序等,可以通过.NET中Environment.SpecialFolder枚举值获取。接下来是添加虚拟驱动器了,可以使用New-PSDrive命令,具体参加下面的函数:
function Add-SpecialDrive { [System.Enum]::GetNames([System.Environment+SpecialFolder]) | % { $psName = $_ $targetPath = [System.Environment]::GetFolderPath($_) New-PSDrive $psName FileSystem $targetPath } }
上面的函数并不能万事大吉,因为创建的虚拟驱动器的作用域只在函数内部,需要改为:
function Add-SpecialDrive { [System.Enum]::GetNames([System.Environment+SpecialFolder]) | % { $psName = $_ $targetPath = [System.Environment]::GetFolderPath($_) New-PSDrive $psName FileSystem $targetPath -Scope Global } }
接下来就可以执行函数看看效果了。先执行Add-SpecialDrive函数,再查询一下当前支持的驱动器
PS C:> Get-PSDrive | select Name,Root Name Root ---- ---- AdminTools C:UsersMosserAppDataRoamingMicrosoftWindowsStart MenuProgramsAdministrative ... Alias ApplicationData C:UsersMosserAppDataRoaming C C: CDBurning C:UsersMosserAppDataLocalMicrosoftWindowsBurnBurn cert CommonAdminTools C:ProgramDataMicrosoftWindowsStart MenuProgramsAdministrative Tools CommonApplicationData C:ProgramData CommonDesktopDirectory C:UsersPublicDesktop CommonDocuments C:UsersPublicDocuments CommonMusic C:UsersPublicMusic CommonOemLinks C: CommonPictures C:UsersPublicPictures CommonProgramFiles C:Program FilesCommon Files CommonProgramFilesX86 C:Program Files (x86)Common Files CommonPrograms C:ProgramDataMicrosoftWindowsStart MenuPrograms CommonStartMenu C:ProgramDataMicrosoftWindowsStart Menu CommonStartup C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup CommonTemplates C:ProgramDataMicrosoftWindowsTemplates CommonVideos C:UsersPublicVideos Cookies C:UsersMosserAppDataRoamingMicrosoftWindowsCookies Desktop C:UsersMosserDesktop DesktopDirectory C:UsersMosserDesktop E E: Env Favorites C:UsersMosserFavorites Fonts C:WindowsFonts Function History C:UsersMosserAppDataLocalMicrosoftWindowsHistory HKCU HKEY_CURRENT_USER HKLM HKEY_LOCAL_MACHINE InternetCache C:UsersMosserAppDataLocalMicrosoftWindowsTemporary Internet Files LocalApplicationData C:UsersMosserAppDataLocal LocalizedResources C: MyComputer C: MyDocuments C:UsersMosserDocuments MyMusic C:UsersMosserMusic MyPictures C:UsersMosserPictures MyVideos C:UsersMosserVideos NetworkShortcuts C:UsersMosserAppDataRoamingMicrosoftWindowsNetwork Shortcuts Personal C:UsersMosserDocuments PrinterShortcuts C:UsersMosserAppDataRoamingMicrosoftWindowsPrinter Shortcuts ProgramFiles C:Program Files ProgramFilesX86 C:Program Files (x86) Programs C:UsersMosserAppDataRoamingMicrosoftWindowsStart MenuPrograms Recent C:UsersMosserAppDataRoamingMicrosoftWindowsRecent Resources C:Windowsresources SendTo C:UsersMosserAppDataRoamingMicrosoftWindowsSendTo StartMenu C:UsersMosserAppDataRoamingMicrosoftWindowsStart Menu Startup C:UsersMosserAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup System C:Windowssystem32 SystemX86 C:WindowsSysWOW64 Templates C:UsersMosserAppDataRoamingMicrosoftWindowsTemplates UserProfile C:UsersMosser Variable Windows C:Windows WSMan Z Z:
测试一下虚拟驱动器,”桌面”和”开始菜单”
PS C:> ls 'Desktop:Screen Recorder.lnk' Directory: C:UsersMosserDesktop Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 7/13/2012 6:14 PM 3081 Screen Recorder.lnk PS C:> ls StartMenu:Programs Directory: C:UsersMosserAppDataRoamingMicrosoftWindowsStart MenuPrograms Mode LastWriteTime Length Name ---- ------------- ------ ---- d-r-- 7/14/2009 12:54 PM Accessories d-r-- 7/13/2012 9:37 AM Administrative Tools d---- 3/13/2012 1:00 PM CodeFlow d-r-- 7/14/2009 12:49 PM Maintenance d---- 8/31/2012 10:49 PM Microsoft d-r-- 7/13/2012 9:37 AM Startup -a--- 3/8/2012 2:36 PM 1413 Internet Explorer (64-bit).lnk -a--- 3/8/2012 2:36 PM 1447 Internet Explorer.lnk -a--- 3/8/2012 2:09 PM 3341 Remote Desktop Connection Manager.lnk -a--- 7/13/2012 6:14 PM 3041 Screen Recorder.lnk
还不错,最后再补充一点,这些新添加的全局虚拟驱动器仍然只对当前控制台会话有效,如果启用PowerShell 控制台,刚才添加的驱动器将不复存在。如果你每次都想打开控制台就让驱动器自动加载,可以参考系列文章之: Powershell自动执行脚本之profile
<pre>原文链接:http://powershell.com/cs/blogs/tips/archive/2012/09/04/adding-personal-drives-in-powershell.aspx
</pre>
本文链接: https://www.pstips.net/powershell-add-special-vital-driver.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!