c# Powershell脚本失败:“无法获取区域信息”

本文关键字:获取 区域 信息 Powershell 脚本 失败 | 更新日期: 2023-09-27 17:53:53

我创建了一个实用的创建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,服务器为Windows server 2012,运行IIS 6.2。

任何帮助都是非常感激的,提前感谢。

c# Powershell脚本失败:“无法获取区域信息”

我发现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+"}");

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

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