Я написал сценарий 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 ...