7

我有一个脚本,我需要找到CN=MyComputer, OU=Computers, DC=vw, DC=local运行它的计算机的完整专有名称 ( ),但是我不能保证该ActiveDirectory模块在运行该脚本的所有计算机上都可用。有没有办法在不使用的情况下获取当前计算机的完整专有名称Get-ADComputer $Env:COMPUTERNAME


以防万一这是一个 XY 问题,我想做的是将计算机移动到特定的 OU,但我需要一种方法来获取正在运行的计算机的 ASDI 条目。

[ADSI]$computer = ("LDAP://" + $localDN)
if($Production)
{
    [ADSI]$destination = 'LDAP://ou=Production,ou=Computers,ou=VetWeb,dc=vw,dc=local'
    $computer.MoveTo($destination);
}
else
{
    [ADSI]$destination = 'LDAP://ou=Test,ou=Computers,ou=VetWeb,dc=vw,dc=local'
    $computer.MoveTo($destination);
}
4

8 回答 8

11

试试这个(需要 v2):

$filter = "(&(objectCategory=computer)(objectClass=computer)(cn=$env:COMPUTERNAME))"
([adsisearcher]$filter).FindOne().Properties.distinguishedname
于 2012-06-21T21:22:32.653 回答
5

小心使用 ADSIsearcher 方法。如果您在同一林中的不同域中有两台同名计算机(导致我执行返回本文的搜索的问题),则此方法不能保证返回正确的计算机。此方法将简单地在 AD 中搜索具有由 ComputerName 环境变量返回的名称的计算机。如果您处于森林中具有多个域的环境中,则需要确保交叉引用计算机加入的域。

版主,这真的应该是对Shay Levy回答的评论,但我不能发表评论,因为我是新人。

于 2014-01-31T04:28:05.547 回答
4

cmdlet Get-ADComputer (PS ver 2.0) 可以提供帮助。

PS:\> $(Get-ADComputer 'mycomputer').distinguishedName

计算机的名称应该是短名称,例如 $env:COMPUTERNAME。

于 2013-05-14T08:43:07.407 回答
0

尝试这样的事情:

$de = New-Object System.DirectoryServices.DirectoryEntry
$ds = New-Object System.DirectoryServices.DirectorySearcher
$ds.SearchRoot = $de
$ds.Filter = "(&(objectCategory=computer)(objectClass=computer)(samAccountName=$($env:ComputerName)$))"
$ds.SearchScope = "SubTree"

$r = $ds.FindOne()

$r.Path
于 2012-06-21T20:51:31.000 回答
0

试试这个......易于理解且易于记忆......

$cn = Read-Host“输入计算机名”

$cnObj = Get-ADComputer $cn

$ou = $cnObj.distinguishedname

$ou

于 2014-05-09T06:39:37.120 回答
0

我知道找到计算机的 DistinguishedName 的唯一可靠方法是以下必须以管理员身份运行:

gpresult /r /scope:computer | find "CN="
于 2018-07-14T19:48:37.980 回答
0
Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\DataStore\Machine\0" -Name "DNName"
于 2019-11-16T17:30:43.127 回答
-1

我认为您可以通过以下方式从环境中获取它:

$computer = gc env:computername

或者这正是你不想要的?我对powershell很糟糕。

于 2012-06-21T20:34:54.960 回答