我正在创建一个工具,以按年龄删除域中所有Windows 7和Windows 10设备上的用户配置文件。我使用此过滤器((objectClass=computer)
)使它工作,但是我想优化为仅获取Windows 7和Windows 10设备,因为我的部门管理台式机/笔记本电脑而不是服务器。为了使该工具更有效并且不尝试连接到设备,我没有管理员访问权限。
所以我尝试了这个过滤器:
mySearcher.Filter = "(&(objectClass=computer)(operatingSystemVersion=*server*))
我的想法是,如果操作系统不是Windows Server 2012或Windows Server 2008,则执行类似的操作,然后执行一些操作。
我加载了operatingSystem
属性,但无法显示。我已经在datagridview中尝试过了,但是当它不起作用时,我只是尝试做一个Console.WriteLine
,也没有任何作用。我想在添加代码以使用WMI删除配置文件之前测试我的概念,方法是仅显示主机名和操作系统版本,以确保它从AD中提取信息而不给我服务器。有人可以帮忙吗?这是代码(目前我正在使用v06域):
Dim mySearcher As DirectorySearcher = New DirectorySearcher(enTry)
mySearcher.PropertiesToLoad.Add("dNSHostName")
mySearcher.PropertiesToLoad.Add("operatingSystem")
mySearcher.PropertiesToLoad.Add("operatingSystemVersion")
mySearcher.Filter = "(&(objectClass=computer)(operatingSystem=*server*))" '("(objectClass=computer)")
Dim resEnt As SearchResult
For Each resEnt In mySearcher.FindAll()
Select Case dMain
Case "v06"
Try
hostName = GetProperty(resEnt, "dNSHostName")
OSystem = GetProperty(resEnt, "operatingSystem")
Dim result1 As Net.NetworkInformation.PingReply = ping.Send(hostName, 1000)
If result1.Status = Net.NetworkInformation.IPStatus.Success Then
Dim row2 As String() = New String() {hostName, "N/A", OSystem}
dgvLocal.Rows.Add(row2)
Else
My.Computer.FileSystem.WriteAllText("C:\ExodusErrorLog.txt", hostName & " - Device is not pingable!" & vbCrLf & vbCrLf, True)
End If
Catch ex As Exception
My.Computer.FileSystem.WriteAllText("C:\ExodusErrorLog.txt", hostName & " - " & ex.Message & vbCrLf & vbCrLf, True)
End Try
Case "v07.med.va.gov"
End Select
Next