Powershell, как обновить несколько записей днс - PullRequest
0 голосов
/ 15 января 2010

У меня есть следующий скрипт, но я получаю ошибку -

Сценарий -

$CNAMES = Get-Content "C:\Temp\alias.txt"
$Query = "Select * from MicrosoftDNS_CNAMEType"
$Record = Get-WmiObject -Namespace "root\microsoftdns" -Query $Query -ComputerName 10.10.10.1 | Where-Object{$_.Ownername -match $CNAME}
Foreach($CNAME in $CNAMES)
{
  $Record.RecordData = "some.server.net"
  $Record.put()
}

Ошибка -

Property 'RecordData' cannot be found on this object; make sure it exists and is settable.
At C:\temp\DNSUpdateCNAMETarget_02.ps1:7 char:9
+ $Record. <<<< RecordData = "some.server.net"
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException

Method invocation failed because [System.Object[]] doesn't contain a method named 'put'.
At C:\temp\DNSUpdateCNAMETarget_02.ps1:8 char:12
+ $Record.put <<<< ()
    + CategoryInfo          : InvalidOperation: (put:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

ТИА

1 Ответ

0 голосов
/ 15 января 2010

Я не пытался (потому что у меня сейчас нет MS-DNS), но я подозреваю, что вам нужно

$Record.PSBase.Put()

, чтобы он заработал.

РЕДАКТИРОВАТЬ:

Как это выглядит $ Запись содержит массив Система.Object , поэтому ему нужно будет привести его к подходящему типу для доступа к .RecordData и .Put ()

Ваш скрипт запрашивает записи типа MicrossoftDNS_CNAMEType , которые поддерживают только CreateInstanceFromPropertyData .

Я бы попытался отправить вам $ Record в Get-Member

Get-WmiObject -Namespace "root\microsoftdns" -Query $Query -ComputerName 10.10.10.1 | Get-Member

чтобы выяснить, с чем вы имеете дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...