如何在 AD 中设置多值属性。例如,我需要在根域对象上设置 msDS-AllowedDNSSuffixes。如果我通过 ADSIEdit 执行此操作,它一次会添加一个值。
我试过:
Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Replace @{'msDS-AllowedDNSSuffixes'='aaa.contoso.com; bbb.contoso.com'}
Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Replace @{'msDS-AllowedDNSSuffixes'='aaa.contoso.com\nbbb.contoso.com'}
Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Replace @{'msDS-AllowedDNSSuffixes'='aaa.contoso.com;bbb.contoso.com'}
Run Code Online (Sandbox Code Playgroud)
它将所有内容添加为一行,如 ADSIEdit 中所示。
我也尝试过:
$suffixes = @"
aaa.contoso.com
bbb.contoso.com
"@
foreach ($i in $suffixes) {
Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Add @{'msDS-AllowedDNSSuffixes'= $i}
}
Run Code Online (Sandbox Code Playgroud)
一样的东西。
如何设置此类属性的值?使用什么分隔符?
我正在尝试在某些 .cmd 文件中获取主机的 FQDN。我们有脱节的 AD 域,所以"@echo %COMPUTERNAME%.%USERDNSDOMAIN%"
不起作用。我的意思是它有效,但返回错误的值。
我最终得到的解决方案是
powershell.exe -noninteractive -command[System.Net.Dns]::GetHostByName(($env:computerName)).HostName
它在命令行中工作正常。我试图将它放入我的 cmd 文件中的一个变量中:
FOR /F "tokens=* USEBACKQ" %%F IN (\`powershell.exe -noninteractive -command
[System.Net.Dns]::GetHostByName(($env:computerName)).HostName\`) DO (
SET var=%%F
)
ECHO %var%
Run Code Online (Sandbox Code Playgroud)
但是此时出现以下错误: ).HostName`) 是意外的。
我知道应该筛选某些内容,因为 cmd 和 powershell 都在解析这一行,但不知道筛选什么以及如何筛选。如何让这个开始工作?