【问题标题】:C# Powershell script failing: "failed to get zone information"C# Powershell 脚本失败:“无法获取区域信息”
【发布时间】:2013-01-17 16:41:57
【问题描述】:

我创建了一个小站点,它实用地创建 DNS NS 记录。当我在 PS(在我的 site.com 服务器上)中执行我的代码时,它运行良好,但是当我从网站(托管在我的 site.com 服务器上)运行它时,它失败并出现错误:“创建 IP 1.1.1.1 时出错。错误:无法在服务器 myServer 上获取 site.com 的区域信息”

我的 PS 脚本是:

Add-DnsServerZoneDelegation site.com –childzonename lab00012 –IPAddress 1.1.1.1 –nameserver 1.1.1.1

我的 C# 代码是:

var labString = "lab" + tenantString;
var scriptText = "Add-DnsServerZoneDelegation site.com –childzonename " + labString
            + " –IPAddress " + ipAddress + " –nameserver " + ipAddress;
using (var runspace = RunspaceFactory.CreateRunspace())
{
    runspace.Open();
    Pipeline pipeline = runspace.CreatePipeline();
    pipeline.Commands.AddScript(scriptText);
    var results = pipeline.Invoke();;
}

我已经确认该站点将运行 PS 命令,例如

Get-WmiObject Win32_BIOS -Namespace 'root\\CIMV2' -computername . 

没有问题。

Powershell 版本是 3.0,服务器是运行 IIS 6.2 的 Windows Server 2012。

非常感谢任何帮助,在此先感谢。

【问题讨论】:

  • 你的代码在 IIS 下执行的是什么?与您的 Powershell 控制台有哪些不同的权限?
  • 我不知道,我假设默认值是什么。这只是我第二次使用 IIS,所以我所做的只是创建一个网站并推送文件。抱歉,IIS 和 powershell 对我来说很新。

标签: c# powershell dns windows-server-2012


【解决方案1】:

我发现 Power Shell 需要增强权限才能更改 DNS(以及相关文件夹和文件)。经过一番研究,我最终使用了这段代码:

pipeline.Commands.AddScript("$pw= convertto-securestring 'adminPassword' -asplaintext –force");
pipeline.Commands.AddScript("$user = New-Object Management.Automation.PSCredential('machine\\Administrator', $pw)");
pipeline.Commands.AddScript("Invoke-Command -ComputerName . -Credential $user -ScriptBlock {"+scriptText+"}");

我认识到硬编码我的管理员密码是一种错误的形式,但时间已经不多了,我无法找到更好的解决方案。

如果其他人有更好的解决方案,我愿意接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2023-03-11
    • 2019-04-16
    • 2017-06-18
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多