如何使用powershell调用SHGetKnownFolderPath?

如何使用powershell调用SHGetKnownFolderPath?,powershell,known-folders,Powershell,Known Folders,我对windows powershell一窍不通。 如何使用psl调用SHGetKnownFolderPath? 如果我不喜欢Get调用返回的某些值,我还想调用SHSetKnownFolderPath。您可以使用p/Invoke。Lee Holmes有一个如何从PowerShell中实现这一点的示例。这里有一个如何使用SHGetKnownFolderPoath的示例 或者,您可以只使用环境。GetFolderPath: PS> [Environment]::GetFolderPath('C

我对windows powershell一窍不通。 如何使用psl调用SHGetKnownFolderPath?
如果我不喜欢Get调用返回的某些值,我还想调用SHSetKnownFolderPath。

您可以使用p/Invoke。Lee Holmes有一个如何从PowerShell中实现这一点的示例。这里有一个如何使用
SHGetKnownFolderPoath
的示例

或者,您可以只使用
环境。GetFolderPath

PS> [Environment]::GetFolderPath('CommonApplicationData')
C:\ProgramData
您可以通过以下方式获得可用选项列表:

PS> [Enum]::GetNames([Environment+SpecialFolder])

在深入研究框架中的静态方法之前,请查看
Env:
PSDrive
中的变量

get-childitem-env:

(获取项目env:\CommonProgramFiles)。值

根据此值(以及其他值),设置位于注册表中:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
这些都是powershell中易于阅读的内容,请将其作为驱动器访问:

ps> cd hkcu:\Software\Microsoft\Windows\CurrentVersion\Explorer\
ps> dir
并使用标准powershell工具读取这些设置

注意:您可以在此处使用powershell设置它们,但这可能会毁了您的一天


如果使用资源管理器更改目录,它还会移动目录并将设置存储在多个位置,如“用户外壳文件夹”和“外壳文件夹”。

我尝试在ps1脚本中使用PInvoke,但收到了“策略不允许”消息。也许一个小的c#/vb程序可以工作。或者是否有一个强大的调整工具,允许设置这些资源管理器路径?您是否使用了
Set ExecutionPolicy RemoteSigned
first?获取ExecutionPolicy returns Restricted。