答案1
不知道关机时文件夹保存在哪里,但要获取打开文件夹的信息电源外壳,使用shell.应用程序COM 对象:
@((New-Object -com shell.application).Windows()).Document.Folder | select Title , { $_.Self.Path }
示例输出
PS C:\...\keith>@((New-Object -com shell.application).Windows()).Document.Folder | select Title , { $_.Self.Path }
Title $_.Self.Path
----- --------------
This PC ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Quick access ::{679F85CB-0220-4080-B29B-5540CC05AAB6}
Windows (C:) C:\
SendTo C:\Users\keith\AppData\Roaming\Microsoft\Windows\SendTo
为了获取虚拟文件夹的人性化名称以及查看完整的命名空间路径,您可以定义一个递归函数来为您提供完整路径(植根于虚拟桌面):
Function NSPath ($oFldr)
{
If ($oFldr.ParentFolder )
{
'{0}\{1}'-f (NSPath $oFldr.ParentFolder), $oFldr.Title
}
Else
{
'\' # or $oFldr.Title
}
}
然后像这样使用该函数:
@((New-Object -com shell.application).Windows()).Document.Folder | %{ NSPath $_ }
输出:
PS C:\...\keith>@($shell.Windows()).Document.Folder | %{ NSPath $_ }
\\This PC
\\Quick access
\\Keith Miller\Documents
\\This PC\Documents
\\This PC\Windows (C:)\Users\keith\Documents
为了便于在批处理中使用,请将该函数添加到您的 PowerShell 配置文件中,如下所示:
@'
New-Object -com shell.application
Function NSPath ($oFldr)
{
If ($oFldr.ParentFolder )
{
'{0}\{1}'-f (NSPath $oFldr.ParentFolder), $oFldr.Title
}
Else
{
'\' # or $oFldr.Title
}
}
'@ | add-content $PROFILE
然后,无论何时启动,该函数NSPath
和 COM 对象都$Shell
可以使用电源外壳。