当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 删除用户配置文件(分步指南)

作者:精品下载站 日期:2024-12-14 20:48:58 浏览:13 分类:玩电脑

使用 PowerShell 删除用户配置文件(分步指南)


IT 管理员职业生涯中的一个常见痛点是用户配置文件。用户配置文件是 Windows IT 专业人员生活中无处不在的一部分;尤其是那些管理虚拟桌面环境的环境,例如远程桌面服务 (RDS) 或 Citrix。在这篇文章中,我将演示一种通过使用 PowerShell 删除用户配置文件(并发现它们)来消除攻击性的方法。

Windows 系统管理员必须处理:

  • 损坏的用户注册表配置单元
  • 需要在所有用户配置文件之间共享的文件
  • 弄清楚如何重新创建损坏的配置文件
  • …和更多

有了 PowerShell,曾经令人沮丧的经历变得不再那么令人沮丧。 PowerShell 可以通过以下几种方式让管理 Windows 用户配置文件变得更加轻松。

枚举用户配置文件

可以轻松查看单台 Windows 计算机上文件系统上的用户配置文件。只需查看C:\Users文件夹即可。但这样做不仅无法全面了解情况,而且由于潜在的文件系统访问问题也很麻烦。有一种更好的方法,那就是通过 WMI 或 CIM。在 CIM 中,存在一个名为 Win32_UserProfile 的类。此类包含计算机上存在的所有配置文件以及简单的文件系统文件夹无法告诉您的许多其他有用信息。

使用 PowerShell,您可以使用 Get-CimInstance 命令访问此 CIM 类。

下面,我在本地计算机上找到第一个用户配置文件。您会注意到许多有用的信息,例如 LastUseTimeSID 等。

PS C:\> Get-CimInstance -ClassName win32_userprofile | Select-Object -First 1


AppDataRoaming                   : Win32_FolderRedirectionHealth
Contacts                         : Win32_FolderRedirectionHealth
Desktop                          : Win32_FolderRedirectionHealth
Documents                        : Win32_FolderRedirectionHealth
Downloads                        : Win32_FolderRedirectionHealth
Favorites                        : Win32_FolderRedirectionHealth
HealthStatus                     : 3
LastAttemptedProfileDownloadTime :
LastAttemptedProfileUploadTime   :
LastBackgroundRegistryUploadTime :
LastDownloadTime                 :
LastUploadTime                   :
LastUseTime                      : 3/14/2019 3:06:39 PM
Links                            : Win32_FolderRedirectionHealth
Loaded                           : False
LocalPath                        : C:\Users\.NET v4.5 Classic
Music                            : Win32_FolderRedirectionHealth
Pictures                         : Win32_FolderRedirectionHealth
RefCount                         :
RoamingConfigured                : False
RoamingPath                      :
RoamingPreference                :
SavedGames                       : Win32_FolderRedirectionHealth
Searches                         : Win32_FolderRedirectionHealth
SID                              : S-1-5-82-3876422241-1344743610-1729199087-774402673-2621913236
Special                          : False
StartMenu                        : Win32_FolderRedirectionHealth
Status                           : 0
Videos                           : Win32_FolderRedirectionHealth
PSComputerName                   :

Get-CimInstance cmdlet 不仅可以在本地运行,还可以远程运行。通过使用 ComputerName 参数,您可以指定 1、10 或 100 台不同的远程计算机,它会很乐意查询每台计算机。

PS C:\> Get-CimInstance -ClassName Win32_UserProfile -ComputerName localhost,WINSRV

删除用户配置文件

一旦您了解了如何枚举计算机上的用户配置文件,您就可以更进一步并删除这些用户配置文件。

我无法计算有多少次因为某些内容损坏而不得不删除用户配置文件,而我只需要用户重新登录并重新创建它。有一次,我只需让用户注销并从文件系统中删除 C:\Users 文件夹。通常它有效,有时则无效。我没有意识到我实际上留下了一些残余物。

执行此操作的正确方法是通过 CIM 启动删除。

使用您刚刚学习过的相同 CIM 类,不仅可以查看配置文件,还可以完全删除它们。这与进入“系统设置”下的“用户配置文件”框并点击“删除”按钮相同。

为此,请再次枚举用户配置文件,这次应用过滤器来选择要删除的单个用户配置文件。在这种情况下,请删除名为 UserA 的用户配置文件。您可以使用 PowerShell 的 Where-Object cmdlet 和一些字符串操作来从 LocalPath 属性中获取用户文件夹名称,如下所示。

一旦您能够缩小单个配置文件的范围,您就可以将该 CIM 实例传递给 Get-CimInstance 返回的每个对象的 Remove-CimInstance cmdlet。此过程将从文件系统和注册表中删除用户配置文件。

Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | Remove-CimInstance

同样,如果您想将其扩展到多台计算机,只需在 Get-CimInstance 上使用 ComputerName 参数即可。

Get-CimInstance -ComputerName SRV1,SRV2,SRV3 -Class Win32_UserProfile | Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | Remove-CimInstance

概括

您现在已经看到了枚举和删除 Windows 用户配置文件的简单方法。如果您不知道 CIM 类 Win32_UserProfile,您可能已将 C:\Users 文件夹关联为配置文件,但您应该知道删除 Win32_UserProfile 现在是 CIM 实例。

您可以看到用户配置文件不仅仅是一个简单的文件系统文件夹。下次您需要从环境中的 Windows 计算机查询或删除用户配置文件时,请使用 CIM。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯