这是代码
function RunPowershellAsAdmin($CommandToBeExecuted)
{
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
#$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList "$CommandToBeExecuted" -Verbose
}
}
RunPowershellAsAdmin("& { Import-Module WebAdministration; if(Test-Path 'IIS:\Sites\$Website_Name') { Remove-WebSite -Name '$Website_Name'; } }")
-Verb和-RedirectStandardOutput不在同一参数中,因此我无法使用-RedirectStandardOutput来获取流程输出as per answer from this link。
我想在隐藏窗口中运行该进程,等待它返回并获取错误,输出和退出代码。
还有其他解决方案吗?
提前致谢。
答案 0 :(得分:0)
如果除了重定向任何标准流之外还需要访问两个RunAs,您需要直接使用System.Diagnostics.Process和System.Diagnostics.ProcessStartInfo类。有关如何处理重定向流的更多信息,请参见MSDN。
$startInfo = new-object System.Diagnostics.ProcessStartInfo
$startInfo.FileName = "powershell"
$startInfo.Arguments = "& { Import-Module WebAdministration; ... }"
$startInfo.Verb = "runas"
$startInfo.RedirectStandardOutput = $true
$process = [System.Diagnostics.Process]::Start($startInfo)
$output = $process.StandardOutput.ReadToEnd()
$process.WaitForExit()