发布读取变量并通过

Issue reading variable and passing through

我正在尝试编写一个脚本来创建一个新的 dns 区域,但是当在其中传递变量时,它给了我一个 error_invalid_name。手动运行命令时它可以工作。当我回显它正确输出的命令时,我现在被卡住了。我还尝试将变量作为字符串传递,并将整个 "abc.domain.com /zoneadd $Zone /dsprimary" 设置为字符串。

这是我的脚本:

import-csv -path C:\List.csv -Delimiter "`t" | ForEach-Object {
$Zone = $_.Zone
$Zone #outputs 10.10.10.in-addr.arpa
dnscmd serverDC.domain.com /zoneadd $Zone /dsprimary

有效的手动命令是

dnscmd serverDC.domain.com /zoneadd 10.10.10.in-addr.arpa /dsprimary

检查 $Zone 是否有任何不属于那里的前导或尾随字符:

Import-Csv -Path 'C:\List.csv' -Delimiter "`t" | ForEach-Object {
  $Zone = $_.Zone
  "-$Zone-"
  dnscmd serverDC.domain.com /zoneadd $Zone /dsprimary
}

我可以通过在区域名称后添加 space 来重现您描述的问题:

PS C:\> <b>Import-Csv .\test.csv -Delimiter "`t" | % {</b>
>>   <b>$Zone = $_.Zone</b>
>>   <b>"-$Zone-"</b>
>>   <b>dnscmd $env:COMPUTERNAME /zoneadd $Zone /dsprimary</b>
>> <b>}</b>
>>
<i>-10.10.10.in-addr.arpa -</i>
DNS server DC01 version is 6.1.7600

Creating zone in built-in domain directory partition...

Command failed:  ERROR_INVALID_NAME     123    0x7B