免责声明:我对powershell非常陌生,几乎不了解WMI。
我正在尝试通过powershell在远程服务器上创建dns条目。我用Google搜索并发现WMI是唯一的方法。
以下代码片段适用于我
$dnsAType = [wmiclass]"\\$dnsServer\root\MicrosoftDNS:MicrosoftDNS_AType"
$dnsAType.CreateInstanceFromPropertyData($dnsServer, $dnsZone, $domainName, $class, $ttl, $ipaddress)
问题是我必须将这些条目作为不同的用户。我登录的用户没有足够的权限。所以我必须传递证书。 Get-WmiObject似乎是传递不同凭据的唯一方式。但我无法让代码适用于Get-WmiObject。
以下代码段可以获取wmi_objects。
$wmi_object = Get-WmiObject -Class MicrosoftDNS_AType -Namespace "root\MicrosoftDNS" -computerName "192.168.1.5" -Credential $creds
但这似乎是一个数组,并且元素似乎没有我期待的CreateInstanceFromPropertyData方法。我对如何解决这个问题感到困惑。任何帮助,将不胜感激。
谷歌搜索只给了我使用wmi文字的结果(我想这就是它们是什么?)
答案 0 :(得分:1)
如果您使用的是PowerShell V2,则可以使用Set-WMIInstance
。
Set-WMIInstance -Namespace "root\MicrosoftDNS" -class MicrosoftDNS_AType -argument @{DnsServerName="srventr2.societe.fr"; ContainerName="societe.fr" ; OwnerName="t1.societe.fr"; RecordData="192.168.10.10" ; RecordClass=1 ; TTL=3600 } -credential (get-credential) -computername "192.168.183.138"
答案 1 :(得分:1)
检查$ dnsAType.psbase.Scope.Options的属性,您可以设置用户名和密码以及其他一些连接选项:
PS > $dnsAType.psbase.Scope.Options
Locale :
Username :
Password :
SecurePassword :
Authority :
Impersonation : Impersonate
Authentication : Unchanged
EnablePrivileges : False
Context : {}
Timeout : 10675199.02:48:05.4775807
答案 2 :(得分:0)
我们按照以下方式开展此工作:
我们在本地和远程计算机上启用了PowerShell远程处理,并通过Invoke-Command
启用了它 PS>Enable-PSRemoting
PS>Invoke-Command {
$dnsAType = [wmiclass]"root\MicrosoftDNS:MicrosoftDNS_AType"
$dnsAType.CreateInstanceFromPropertyData($dnsServer, $dnsZone, $domainName, $class, $ttl, $ipaddress)
} -Credentials $cred -ComputerName $remotemachineName
只有一件事你必须使用提升的权限运行。希望这有助于其他人。
答案 3 :(得分:0)
只是为了分享知识:
如果您想在本地服务器(server.contoso.com)上执行该操作,并且您至少有一个SRV记录实例
PS C:\> $record = Get-WmiObject -namespace "root\MicrosoftDNS" -class MicrosoftDNS_SRVType
PS C:\> $record[0].CreateInstanceFromTextRepresentation("server.contoso.com", "contoso.com", "_mysvc._tcp.contoso.com IN SRV 0 100 8000 host1.contoso.com")
答案 4 :(得分:-1)
今天仍然相关......
至于备用凭据,在以前的答案中:-Credential
然而,在返回正确的界面时,Powershell可能有点“笨拙”。
以下命令将返回MicrosoftDNS_ResourceRecord(即使我们要求MicrosoftDNS_AType)
GWMI -Class MicrosoftDNS_AType -ComputerName $dns `
-Namespace root\MicrosoftDNS -Credential username | GM
作为替代方案,以下命令将返回MicrosoftDNS_AType
GWMI -Class MicrosoftDNS_AType -ComputerName $dns `
-Namespace root\MicrosoftDNS -Credential username -List | GM
完成任务:
(GWMI -Class MicrosoftDNS_AType -ComputerName $dns `
-Namespace root\MicrosoftDNS -Credential username `
-List).CreateInstanceFromPropertyData($dnsFqdn,$zone, $host, 1, 3600, $ip)