Назад | Перейти на главную страницу

Как я могу запустить командное окно, скрытое или свернутое?

Я написал сценарий PowerShell, который генерирует всплывающее окно типа «EULA», с которым пользователь должен согласиться.

Он делает это при входе в систему, выполняя запланированную задачу для учетной записи пользователя (не администратора). Он должен работать с повышенными правами, поэтому я использую следующий скрипт для его запуска с повышенными правами:

$pw= convertto-securestring "myPassw0rd" -asplaintext –force
$credential = new-object -typename system.management.automation.pscredential -argumentlist "-default-",$pw
$localArgs = "/c Powershell c:\scripts\myScript.ps1" 

[System.Diagnostics.Process]::Start("cmd.exe", $localArgs, "Administrator", $credential.Password, $computer)

(Я буду шифровать пароль, чтобы сделать его немного более безопасным, но это не имеет отношения к этому вопросу.)

В любом случае, моя проблема в том, что при вызове скрипта он отображает окно командной строки за моим "красивым" всплывающим окном EULA.

Есть ли способ скрыть / свернуть командное окно?

Спасибо,

Бен

Это должно быть то, что вам нужно:

$Process = new-Object System.Diagnostics.Process
$Process.StartInfo.UserName="Administrator"
$Process.StartInfo.Password=$Credential.Password
$Process.StartInfo.Domain="$Computer"
$Process.StartInfo.WindowStyle="Hidden"
$Process.StartInfo.FileName="cmd.exe"
$Process.StartInfo.Arguments="$localArgs"
$Process.Start()

Вы не можете использовать параметры -Credential и -WindowStyle вместе с PowerShell v2, вам либо нужен PowerShell v3, либо параметры -NoNewWindow и -Credential вместе

Вы можете использовать приведенный ниже код для PowerShell v2:

$user = "{user}"
$pass = ConvertTo-SecureString -String "{password}" -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential `
     -argumentlist $user, $pass

start-process -Credential $cred -NoNewWindow powershell "-command & '{path and script}'"

Вы можете использовать командлет Start-Process (PowerShell 2.0):

Start-Process cmd.exe -Credential $ credential -WindowStyle Hidden -WorkingDirectory ... -ArgumentList ...