2013-01-17 56 views
2

我創建了一個實用創建DNS NS記錄的小型站點。當我在PS(在我的site.com服務器上)執行我的代碼時,它完美地工作,但是當我從網站(託管在我的site.com服務器上)運行它時,它失敗,出現錯誤:「創建IP 1.1.1.1時出錯。錯誤:無法獲得服務器myServer上的site.com區域信息」C#Powershell腳本失敗:「未能獲得區域信息」

我的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。

任何幫助都非常感謝,提前感謝。

+0

在IIS下執行的代碼是什麼?有哪些權限與您的Powershell控制檯不同? – D3vtr0n

+0

我不知道,我承擔任何默認值。這只是我第二次使用IIS,所以我所做的只是創建一個網站並推送文件。對不起,IIS和PowerShell對我來說很新。 – Sabe

回答

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

我承認,硬編碼我的管理員密碼是壞的形式,但時間不多了,我無法找到一個更好的解決方案。

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