Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在powershell-HKCU PSDrive中的注册表项中导入文件路径_Powershell_Get Childitem - Fatal编程技术网

无法在powershell-HKCU PSDrive中的注册表项中导入文件路径

无法在powershell-HKCU PSDrive中的注册表项中导入文件路径,powershell,get-childitem,Powershell,Get Childitem,第一个帖子在这里 我是powershell的新手,一直在尝试编写一些脚本 目前,我正在尝试编写powershell脚本(PSVersion 5.1.15063.502),以便在Computer\HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\USER Shell文件夹中的注册表中搜索,以查找指向指定文件路径的任何条目。因此,如果需要,我可以更改这些。使用Set ItemProperty功能 理想情况

第一个帖子在这里

我是powershell的新手,一直在尝试编写一些脚本

目前,我正在尝试编写powershell脚本(PSVersion 5.1.15063.502),以便在Computer\HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\USER Shell文件夹中的注册表中搜索,以查找指向指定文件路径的任何条目。因此,如果需要,我可以更改这些。使用
Set ItemProperty
功能

理想情况下,我希望搜索用户Shell文件夹的“数据”部分

现在,当我运行
Get ItemProperty
函数时,我会得到如下文件夹的输出:

PS C:\WINDOWS\system32> Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"


*AppData                                : C:\Users\RD\AppData\Roaming
Cache                                  : C:\Users\RD\AppData\Local\Microsoft\Windows\INetCache
Cookies                                : C:\Users\RD\AppData\Local\Microsoft\Windows\INetCookies
Desktop                                : C:\Users\RD\Desktop
Favorites                              : C:\Users\RD\Favorites
History                                : C:\Users\RD\AppData\Local\Microsoft\Windows\History
Local AppData                          : C:\Users\RD\AppData\Local
My Music                               : C:\Users\RD\Music
My Pictures                            : C:\Users\RD\Pictures
My Video                               : C:\Users\RD\Videos
NetHood                                : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Personal                               : C:\Users\RD\Documents
PrintHood                              : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Programs                               : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Recent                                 : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Recent
SendTo                                 : C:\Users\RD\AppData\Roaming\Microsoft\Windows\SendTo
Start Menu                             : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Start Menu
Startup                                : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Templates                              : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Templates
{374DE290-123F-4565-9164-39C4925E467B} : C:\Users\RD\Downloads
PSPath                                 : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
PSParentPath                           : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
PSChildName                            : User Shell Folders
PSDrive                                : HKCU
PSProvider                             : Microsoft.PowerShell.Core\Registry*
我的问题似乎是如何尝试通过管道传递此函数来为列为“*Appdata\”的项提供输出

我尝试了以下操作,但没有得到任何输出:

Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" | Where { $_.Data -eq "*AppData\*"}
我确信我在这里犯了一个基本的错误,但我似乎无法理解

我还尝试在以下方面获取ChildItem:

Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ |
 Where { $_.Name -like "*User Shell Folders*" } | Select Property | Where { $_.Property -like "*Appdata*" } | Format-Wide
但是不要只得到正确的输出:{AppData,Cache,Cookies,Desktop…}

通过查看硬盘驱动器,我可以在类似的脚本上获得输出:

PS C:\WINDOWS\system32> Get-ItemProperty -Path "C:\Users\RD\Documents" | Where { $_.Name -like "*Documents"}


    Directory: C:\Users\RD


Mode                LastWriteTime         Length Name                                                                                                                                                      
----                -------------         ------ ----                                                                                                                                                      
d-r---       26/08/2017     13:00                Documents 

可能是因为PSDrive参数不同?如果您有任何建议,我将不胜感激。

我将尝试给您一些建议,因为这似乎正是您想要的。具体而言:

。。。查找指向指定文件路径的任何条目

在注册表路径上使用Get-ItemProperty时,您从PowerShell获得了一个自定义对象,该对象将屏幕截图中的名称设置为NoteProperty,并将注册表(指向它们的数据)值设置为这些noteproperties的值。您可以轻松验证这一点:

    PS C:\> Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"| Get-member


   TypeName: System.Management.Automation.PSCustomObject

Name                                   MemberType   Definition
----                                   ----------   ----------
Equals                                 Method       bool Equals(System.Object obj)
GetHashCode                            Method       int GetHashCode()
GetType                                Method       type GetType()
ToString                               Method       string ToString()
AppData                                NoteProperty string AppData=C:\Users\adil\AppData\Roaming
Cache                                  NoteProperty string Cache=C:\Users\adil\AppData\Local\Microsoft\Windows\INetCache
Cookies                                NoteProperty string Cookies=C:\Users\adil\AppData\Local\Microsoft\Windows\INetCookies
Desktop                                NoteProperty string Desktop=C:\Users\adil\Desktop
Favorites                              NoteProperty string Favorites=C:\Users\adil\Favorites
那么,如何根据搜索条件访问NoteProperty值呢?您可以查看该对象并查看它提供了什么(仅限于我们关心的对象):

如果查看成员或属性,您现在将看到一个集合,其中列出了您正在查看的注册表项的名称和值:

PS C:\Users\adil> (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders").psobject.properties |select -first 3


MemberType      : NoteProperty
IsSettable      : True
IsGettable      : True
Value           : C:\Users\adil\AppData\Roaming
TypeNameOfValue : System.String
Name            : AppData
IsInstance      : True

MemberType      : NoteProperty
IsSettable      : True
IsGettable      : True
Value           : C:\Users\adil\AppData\Local\Microsoft\Windows\INetCache
TypeNameOfValue : System.String
Name            : Cache
IsInstance      : True

MemberType      : NoteProperty
IsSettable      : True
IsGettable      : True
Value           : C:\Users\adil\AppData\Local\Microsoft\Windows\INetCookies
TypeNameOfValue : System.String
Name            : Cookies
IsInstance      : True
根据该信息,您可以创建一个新对象,该对象仅包含您正在查找的名称和数据值,方法是使用,-match运算符进行过滤:

    PS C:\Users\adil> (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders").psobject.Properties| ? {$_.value -match 'appdata'}|select Name,Value

Name          Value
----          -----
AppData       C:\Users\adil\AppData\Roaming
Cache         C:\Users\adil\AppData\Local\Microsoft\Windows\INetCache
Cookies       C:\Users\adil\AppData\Local\Microsoft\Windows\INetCookies
History       C:\Users\adil\AppData\Local\Microsoft\Windows\History
Local AppData C:\Users\adil\AppData\Local
NetHood       C:\Users\adil\AppData\Roaming\Microsoft\Windows\Network Shortcuts
PrintHood     C:\Users\adil\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Programs      C:\Users\adil\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Recent        C:\Users\adil\AppData\Roaming\Microsoft\Windows\Recent
SendTo        C:\Users\adil\AppData\Roaming\Microsoft\Windows\SendTo
Start Menu    C:\Users\adil\AppData\Roaming\Microsoft\Windows\Start Menu
Startup       C:\Users\adil\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Templates     C:\Users\adil\AppData\Roaming\Microsoft\Windows\Templates

我会尽量给你一些建议,因为这似乎是你正在寻找的。具体而言:

。。。查找指向指定文件路径的任何条目

在注册表路径上使用Get-ItemProperty时,您从PowerShell获得了一个自定义对象,该对象将屏幕截图中的名称设置为NoteProperty,并将注册表(指向它们的数据)值设置为这些noteproperties的值。您可以轻松验证这一点:

    PS C:\> Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"| Get-member


   TypeName: System.Management.Automation.PSCustomObject

Name                                   MemberType   Definition
----                                   ----------   ----------
Equals                                 Method       bool Equals(System.Object obj)
GetHashCode                            Method       int GetHashCode()
GetType                                Method       type GetType()
ToString                               Method       string ToString()
AppData                                NoteProperty string AppData=C:\Users\adil\AppData\Roaming
Cache                                  NoteProperty string Cache=C:\Users\adil\AppData\Local\Microsoft\Windows\INetCache
Cookies                                NoteProperty string Cookies=C:\Users\adil\AppData\Local\Microsoft\Windows\INetCookies
Desktop                                NoteProperty string Desktop=C:\Users\adil\Desktop
Favorites                              NoteProperty string Favorites=C:\Users\adil\Favorites
那么,如何根据搜索条件访问NoteProperty值呢?您可以查看该对象并查看它提供了什么(仅限于我们关心的对象):

如果查看成员或属性,您现在将看到一个集合,其中列出了您正在查看的注册表项的名称和值:

PS C:\Users\adil> (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders").psobject.properties |select -first 3


MemberType      : NoteProperty
IsSettable      : True
IsGettable      : True
Value           : C:\Users\adil\AppData\Roaming
TypeNameOfValue : System.String
Name            : AppData
IsInstance      : True

MemberType      : NoteProperty
IsSettable      : True
IsGettable      : True
Value           : C:\Users\adil\AppData\Local\Microsoft\Windows\INetCache
TypeNameOfValue : System.String
Name            : Cache
IsInstance      : True

MemberType      : NoteProperty
IsSettable      : True
IsGettable      : True
Value           : C:\Users\adil\AppData\Local\Microsoft\Windows\INetCookies
TypeNameOfValue : System.String
Name            : Cookies
IsInstance      : True
根据该信息,您可以创建一个新对象,该对象仅包含您正在查找的名称和数据值,方法是使用,-match运算符进行过滤:

    PS C:\Users\adil> (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders").psobject.Properties| ? {$_.value -match 'appdata'}|select Name,Value

Name          Value
----          -----
AppData       C:\Users\adil\AppData\Roaming
Cache         C:\Users\adil\AppData\Local\Microsoft\Windows\INetCache
Cookies       C:\Users\adil\AppData\Local\Microsoft\Windows\INetCookies
History       C:\Users\adil\AppData\Local\Microsoft\Windows\History
Local AppData C:\Users\adil\AppData\Local
NetHood       C:\Users\adil\AppData\Roaming\Microsoft\Windows\Network Shortcuts
PrintHood     C:\Users\adil\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Programs      C:\Users\adil\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Recent        C:\Users\adil\AppData\Roaming\Microsoft\Windows\Recent
SendTo        C:\Users\adil\AppData\Roaming\Microsoft\Windows\SendTo
Start Menu    C:\Users\adil\AppData\Roaming\Microsoft\Windows\Start Menu
Startup       C:\Users\adil\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Templates     C:\Users\adil\AppData\Roaming\Microsoft\Windows\Templates

你说你刚刚开始,你知道如何使用| Get member吗?我没有给你一个脚本,让你知道你将如何做,而是发布了我将如何找到要做的事情。你说你刚刚开始,你知道如何使用| Get member吗?而不是给你一个脚本,让你知道你将如何做,我发布了我将如何找到要做的事情的方法。谢谢你的Adil!这正是我要找的。伟大的功能获得会员!非常感谢:)谢谢你的Adil!这正是我要找的。伟大的功能获得会员!非常感谢:)