3

DNS NS レコードを実用的に作成する小さなサイトを作成しました。コードを PS (私の site.com サーバー上) で実行すると完全に動作しますが、(私の site.com サーバー上でホストされている) Web サイトからコードを実行すると、次のエラーで失敗します:「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 です。

事前に感謝します。

4

1 に答える 1

2

DNS (および関連するフォルダーとファイル) を変更するには、Power Shell に強化されたアクセス許可が必要であることがわかりました。いくつかの調査の後、私はこのコードを使用することになりました:

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

管理者パスワードをハード コーディングするのは不適切な形式であることは認識していますが、時間がなくなり、より良い解決策を見つけることができませんでした。

他の誰かがより良い解決策を持っている場合、私はそれを受け入れます。

于 2013-02-07T18:40:22.983 に答える