我有一个脚本,我需要找到正在运行的计算机的完整专有名称(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);
}

最佳答案

试试这个(需要v2):

$filter = "(&(objectCategory=computer)(objectClass=computer)(cn=$env:COMPUTERNAME))"
([adsisearcher]$filter).FindOne().Properties.distinguishedname

关于powershell - 在Powershell中获取当前计算机的专有名称,而无需使用ActiveDirectory模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11146264/

10-12 21:20