删除注册表值的父键

时间:2014-07-16 20:15:58

标签: powershell

我们目前正在升级到新的无线系统,我们正在通过GPO推出SSID。但是,我们希望从系统中删除现有的SSID /配置文件,这不是简单地使用“netsh wlan delete profile name”的问题。我们遇到的问题是从我们用户的“Lenovo Access Connections”中删除这些配置文件,该配置管理大多数(如果不是全部)用户的各种网络配置文件。如果使用netsh删除它,用户只需打开Access Connections即可在Windows中重新创建该配置文件。 我们不能简单地删除配置文件,因为每个用户都可以在程序中使用他们想要的任何昵称来命名我们的公司网络。话虽这么说,我发现这些配置文件存储在注册表中。

Lenovo Access Connections

HKLM \ SOFTWARE \ Wow6432Node \ Lenovo \ Access Connections \ Locations

这就是问题所在,我无法找到在\ Locations文件夹中搜索SSID的方法,然后删除它的主键。它目前的布局如下:

\ Locations(自定义配置文件名称)\ AdptList \ Adpt00 \

在Adpt00密钥中,有一个名为m_szSsid的Reg_SZ,其值为=我们网络的SSID。所以,基本上我正在寻找所有的\ Locations,如果Adpt00 Key中的任何m_szSsid存在于每个不同的配置文件中......从\ Locations中删除整个配置文件,是的,我们的一些用户有多个配置文件的设置我不知道相同的网络SSID。

这是我到目前为止所拥有的

$LACKey = "HKLM:\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations"
$LACProfileKey = Get-ChildItem $LACKey -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
   If((Get-ItemProperty -Path $_.PsPath) -match "m_szSsid")
      {
      $_.PsPath
      }
  }

这将返回当前测试计算机的\ Locations下的唯一配置文件(仅包含一个匹配的配置文件),但是从这里我不确定如何为找到的每个匹配的无线配置文件扩展m_szSsid以确保它匹配我们的SSID。然后从那里删除\ Locations \

下的父配置文件文件夹

修改

我做了一些改变

$LACKey = 'SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations'
$LACProfileKey = Get-ChildItem "HKLM:\$LACKey" -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
If(( Get-ItemProperty -Path $_.PsPath) -match "m_szSsid") {
$_.PsPath 
ForEach-Object {
If((Get-ItemProperty -Path $LACProfileKey -Name m_szSsid).m_szSsid -match "<Company SSID HERE>") {
$ssIDKey = (Get-ItemProperty -Path $LACProfileKey $_.PSParentPath).PSParentPath
}
}
}
}

但我要回复此错误

Get-ItemProperty : Property Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Lenovo\Access C
onnections\Locations\<Company SSID HERE>\AdptList does not exist at path HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Lenovo\Access Con
nections\Locations\HYDAC-NA\AdptList\Adpt00.
At line:6 char:29
+ $ssIDKey = (Get-ItemProperty <<<<  -Path $LACProfileKey $_.PSParentPath).PSParentPath
+ CategoryInfo          : InvalidArgument: (Microsoft.Power...ID ERE>\AdptList:String)   [Get-ItemProperty], PSArgume
   ntException
   + FullyQualifiedErrorId :    System.Management.Automation.PSArgumentException,Microsoft.PowerShell.Commands.GetItemPr
  opertyCommand

我很感激任何有关此问题的进一步指导,我确信很明显我是一个Powershell新手;)

1 个答案:

答案 0 :(得分:0)

你试过了吗?

Get-ItemProperty -Path $_.PSPath -Name "m_szSsid" 

您还有$_.PSPath$_.PSParentPath,根据此信息,您应该可以在相应的注册表上使用Remove-Item