# Servidor PowerShell com visualização de HTML em nova janela
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Web
# Função para abrir uma nova janela com o terminal PowerShell
function Start-PowerShellServer {
$serverForm = New-Object System.Windows.Forms.Form
$serverForm.Text = "Terminal PowerShell (Servidor)"
$terminalBox = New-Object System.Windows.Forms.TextBox
$terminalBox.Multiline = $true
$terminalBox.Dock = [System.Windows.Forms.DockStyle]::Fill
$terminalBox.ReadOnly = $true
$terminalBox.BackColor = [System.Drawing.Color]::Black
$terminalBox.ForeColor = [System.Drawing.Color]::White
$terminalBox.Font = New-Object System.Drawing.Font("Consolas", 10)
$serverForm.Controls.Add($terminalBox)
# Simular um servidor (apenas para demonstração)
$terminalBox.Text += "Servidor PowerShell iniciado...`n"
$terminalBox.Text += "Aguardando envio de HTML...`n"
$serverForm.ShowDialog() | Out-Null
# Função para exibir o HTML em uma nova janela
function Show-HtmlWindow {
$htmlForm = New-Object System.Windows.Forms.Form
$htmlForm.Text = "Visualização de HTML"
$webBrowser = New-Object System.Windows.Forms.WebBrowser
$webBrowser.Dock = [System.Windows.Forms.DockStyle]::Fill
$webBrowser.Navigate("about:blank")
$webBrowser.Document.Write($htmlContent)
$htmlForm.Controls.Add($webBrowser)
$htmlForm.ShowDialog() | Out-Null
$mainForm = New-Object System.Windows.Forms.Form
$mainForm.Text = "Servidor HTML"
# Botão para abrir o terminal PowerShell
$openServerButton = New-Object System.Windows.Forms.Button
$openServerButton.Text = "Abrir Terminal PowerShell"
$openServerButton.Dock = [System.Windows.Forms.DockStyle]::Top
$openServerButton.Height = 40
$openServerButton.Add_Click({
$mainForm.Controls.Add($openServerButton)
# Campo para inserir HTML
$htmlInput = New-Object System.Windows.Forms.TextBox
$htmlInput.Multiline = $true
$htmlInput.Dock = [System.Windows.Forms.DockStyle]::Top
$mainForm.Controls.Add($htmlInput)
$sendHtmlButton = New-Object System.Windows.Forms.Button
$sendHtmlButton.Text = "Enviar HTML"
$sendHtmlButton.Dock = [System.Windows.Forms.DockStyle]::Top
$sendHtmlButton.Height = 40
$sendHtmlButton.Add_Click({
if (-not [string]::IsNullOrEmpty($htmlInput.Text)) {
Show-HtmlWindow -htmlContent $htmlInput.Text
[System.Windows.Forms.MessageBox]::Show("Insira um código HTML antes de enviar.", "Aviso")
$mainForm.Controls.Add($sendHtmlButton)
# Exibir a janela principal
$mainForm.ShowDialog() | Out-Null
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
function Start-PowerShellServer {
$serverForm = New-Object System.Windows.Forms.Form
$serverForm.Text = "Terminal PowerShell (Servidor)"
$terminalBox = New-Object System.Windows.Forms.TextBox
$terminalBox.Multiline = $true
$terminalBox.Dock = 'Fill'
$terminalBox.ReadOnly = $true
$terminalBox.BackColor = 'Black'
$terminalBox.ForeColor = 'White'
$terminalBox.Font = New-Object System.Drawing.Font("Consolas", 10)
$serverForm.Controls.Add($terminalBox)
$terminalBox.AppendText("Servidor iniciado...`n")
$serverForm.ShowDialog() | Out-Null
function Show-HtmlInBrowser {
$tempFile = [System.IO.Path]::GetTempFileName().Replace(".tmp", ".html")
Set-Content -Path $tempFile -Value $htmlContent -Encoding UTF8
$form = New-Object System.Windows.Forms.Form
$form.Text = "Servidor PowerShell - GUI Completa"
$form.StartPosition = "CenterScreen"
$htmlInput = New-Object System.Windows.Forms.TextBox
$htmlInput.Multiline = $true
$htmlInput.ScrollBars = "Vertical"
$htmlInput.Font = New-Object System.Drawing.Font("Consolas", 10)
$htmlInput.Text = "<html><body><h1>Seu HTML aqui</h1></body></html>"
$form.Controls.Add($htmlInput)
$btnHtml = New-Object System.Windows.Forms.Button
$btnHtml.Text = "Visualizar HTML"
Show-HtmlInBrowser -htmlContent $htmlInput.Text
$form.Controls.Add($btnHtml)
$createLabel = New-Object System.Windows.Forms.Label
$createLabel.Text = "Criar Arquivo (caminho + conteúdo):"
$createLabel.Dock = 'Top'
$form.Controls.Add($createLabel)
$createPathBox = New-Object System.Windows.Forms.TextBox
$createPathBox.Dock = 'Top'
$createPathBox.PlaceholderText = "Ex: C:\teste.txt"
$form.Controls.Add($createPathBox)
$createContentBox = New-Object System.Windows.Forms.TextBox
$createContentBox.Dock = 'Top'
$createContentBox.PlaceholderText = "Conteúdo do arquivo"
$form.Controls.Add($createContentBox)
$createBtn = New-Object System.Windows.Forms.Button
$createBtn.Text = "Criar Arquivo"
if (Test-Path $createPathBox.Text) {
[System.Windows.Forms.MessageBox]::Show("Arquivo já existe!", "Erro")
Set-Content -Path $createPathBox.Text -Value $createContentBox.Text -Encoding UTF8
[System.Windows.Forms.MessageBox]::Show("Arquivo criado: $($createPathBox.Text)", "Sucesso")
$form.Controls.Add($createBtn)
$deleteLabel = New-Object System.Windows.Forms.Label
$deleteLabel.Text = "Apagar Arquivo (caminho):"
$deleteLabel.Dock = 'Top'
$form.Controls.Add($deleteLabel)
$deletePathBox = New-Object System.Windows.Forms.TextBox
$deletePathBox.Dock = 'Top'
$deletePathBox.PlaceholderText = "Ex: C:\teste.txt"
$form.Controls.Add($deletePathBox)
$deleteBtn = New-Object System.Windows.Forms.Button
$deleteBtn.Text = "Apagar Arquivo"
if (Test-Path $deletePathBox.Text) {
$confirm = [System.Windows.Forms.MessageBox]::Show("Deseja apagar:`n$($deletePathBox.Text)?", "Confirmar", "YesNo")
if ($confirm -eq "Yes") {
Remove-Item -Path $deletePathBox.Text -Force
[System.Windows.Forms.MessageBox]::Show("Arquivo apagado.", "OK")
[System.Windows.Forms.MessageBox]::Show("Arquivo não encontrado!", "Erro")
$form.Controls.Add($deleteBtn)
# --- PROCURAR ARQUIVO NO PC ---
$browseBtn = New-Object System.Windows.Forms.Button
$browseBtn.Text = "Procurar Arquivo no PC"
$ofd = New-Object System.Windows.Forms.OpenFileDialog
$ofd.Title = "Escolher Arquivo"
if ($ofd.ShowDialog() -eq "OK") {
[System.Windows.Forms.MessageBox]::Show("Arquivo selecionado:`n$($ofd.FileName)", "Selecionado")
$form.Controls.Add($browseBtn)
# --- PESQUISA AVANÇADA WEB ---
$searchBox = New-Object System.Windows.Forms.TextBox
$searchBox.PlaceholderText = "Digite algo para pesquisar na web"
$form.Controls.Add($searchBox)
$searchBtn = New-Object System.Windows.Forms.Button
$searchBtn.Text = "Pesquisar na Web"
if ($searchBox.Text -ne "") {
$query = [System.Web.HttpUtility]::UrlEncode($searchBox.Text)
Start-Process "https://www.google.com/search?q=$query"
$form.Controls.Add($searchBtn)
# --- INICIAR COM O WINDOWS ---
$startupBtn = New-Object System.Windows.Forms.Button
$startupBtn.Text = "Adicionar ao Início do Windows"
$scriptPath = $MyInvocation.MyCommand.Path
$shortcutPath = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\AutoStartScript.lnk"
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = "powershell.exe"
$shortcut.Arguments = "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"$scriptPath`""
[System.Windows.Forms.MessageBox]::Show("Este script será iniciado com o Windows.", "Sucesso")
$form.Controls.Add($startupBtn)
# Mostrar janela principal
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Servidor PowerShell - Electron</title>
família de fontes: Consolas, monoespaçado;
área de texto, entrada [tipo = "texto"] {
dimensionamento da caixa: caixa de borda;
família de fontes: Consolas, monoespaçado;
background-color: #005fa3;
<h1>Servidor PowerShell - Electron</h1>
<label for="htmlInput">Campo HTML:</label>
<textarea id="htmlInput"><html><body><h1>Seu HTML aqui</h1></body></html></textarea>
<button onclick="visualizarHtml()">Visualizar HTML</button>
<label for="createPath">Criar Arquivo (caminho):</label>
<input type="text" id="createPath" placeholder="Ex: C:\teste.txt" />
<label for="createContent">Conteúdo do arquivo:</label>
<textarea id="createContent" placeholder="Conteúdo do arquivo"></textarea>
<button onclick="criarArquivo()">Criar Arquivo</button>
<label for="deletePath">Apagar Arquivo (caminho):</label>
<input type="text" id="deletePath" placeholder="Ex: C:\teste.txt" />
<button onclick="apagarArquivo()">Apagar Arquivo</button>
<button onclick="procurarArquivo()">Procurar Arquivo no PC</button>
<label for="searchBox">Pesquisar na Web:</label>
<input type="text" id="searchBox" placeholder="Digite algo para pesquisar na web" />
<button onclick="pesquisarWeb()">Pesquisar na Web</button>
<button onclick="adicionarStartup()">Adicionar ao Início do Windows</button>
<label>Executar Script PowerShell (caminho):</label>
<input type="text" id="psScriptPath" placeholder="Ex: C:\script.ps1" />
<button onclick="executarPowerShell()">Executar PowerShell</button>
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('api', {
createFile: (path, content) => ipcRenderer.invoke('create-file', path, content),
deleteFile: (path) => ipcRenderer.invoke('delete-file', path),
openFileDialog: () => ipcRenderer.invoke('open-file-dialog'),
runPowerShell: (scriptPath) => ipcRenderer.invoke('run-powershell', scriptPath),
openUrl: (url) => ipcRenderer.invoke('open-url', url),
addToStartup: () => ipcRenderer.invoke('add-to-startup'),
<h1 style="color:green;">separação de servers js</h1>
async function visualizarHtml() {
const content = document.getElementById('htmlInput').value;
w.document.write(content);
async function criarArquivo() {
const path = document.getElementById('createPath').value.trim();
const content = document.getElementById('createContent').value;
alert('Informe o caminho do arquivo para criar.');
const result = await window.api.createFile(path, content);
alert(result.success ? 'Arquivo criado!' : 'Erro: ' + result.message);
async function apagarArquivo() {
const path = document.getElementById('deletePath').value.trim();
alert('Informe o caminho do arquivo para apagar.');
if (!confirm(`Deseja apagar o arquivo?\n${path}`)) return;
const result = await window.api.deleteFile(path);
alert(result.success ? 'Arquivo apagado!' : 'Erro: ' + result.message);
async function procurarArquivo() {
const path = await window.api.openFileDialog();
if (path) alert(`Arquivo selecionado:\n${path}`);
async function pesquisarWeb() {
const query = document.getElementById('searchBox').value.trim();
alert('Digite algo para pesquisar!');
await window.api.openUrl('https://www.google.com/search?q=' + encodeURIComponent(query));
async function adicionarStartup() {
const result = await window.api.addToStartup();
alert(result.success ? 'App configurado para iniciar com o Windows!' : 'Erro: ' + result.message);
função assíncrona executarPowerShell() {
const caminho = document.getElementById('psScriptPath').value.trim();
alert('Informe o caminho do script PowerShell.');
const outputDiv = document.getElementById('output');
outputDiv.textContent = 'Executando...';
const resultado = await window.api.runPowerShell(caminho);
outputDiv.textContent = resultado.output || «(Sem saída)»;
outputDiv.textContent = 'Erro: ' + result.message;