发出阅读变量并通过

时间:2015-01-08 17:34:05

标签: powershell csv dns

我正在尝试编写一个脚本来创建一个新的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

1 个答案:

答案 0 :(得分:0)

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

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

我可以通过在区域名称后面添加一个空格来重现您描述的问题:

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

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

Command failed:  ERROR_INVALID_NAME     123    0x7B