Compartilhar via


Start-Process

Inicia um ou mais processos no computador local.

Sintaxe

Default (Default)

Start-Process
    [-FilePath] <string>
    [[-ArgumentList] <string[]>]
    [-Credential <pscredential>]
    [-WorkingDirectory <string>]
    [-LoadUserProfile]
    [-NoNewWindow]
    [-PassThru]
    [-RedirectStandardError <string>]
    [-RedirectStandardInput <string>]
    [-RedirectStandardOutput <string>]
    [-WindowStyle <ProcessWindowStyle>]
    [-Wait]
    [-UseNewEnvironment]
    [<CommonParameters>]

UseShellExecute

Start-Process
    [-FilePath] <string>
    [[-ArgumentList] <string[]>]
    [-WorkingDirectory <string>]
    [-PassThru]
    [-Verb <string>]
    [-WindowStyle <ProcessWindowStyle>]
    [-Wait]
    [<CommonParameters>]

Description

O cmdlet Start-Process inicia um ou mais processos no computador local. Por padrão, Start-Process cria um novo processo que herda todas as variáveis de ambiente definidas no processo atual.

Para especificar o programa executado no processo, insira um arquivo executável ou um arquivo de script ou um arquivo que possa ser aberto usando um programa no computador. Se você especificar um arquivo não executável, Start-Process iniciará o programa associado ao arquivo, semelhante ao cmdlet Invoke-Item.

Você pode usar os parâmetros de Start-Process para especificar opções, como carregar um perfil de usuário, iniciar o processo em uma nova janela ou usar credenciais alternativas.

Exemplos

Exemplo 1: iniciar um processo que usa valores padrão

Este exemplo inicia um processo que usa o arquivo Sort.exe na pasta atual. O comando usa todos os valores padrão, incluindo o estilo de janela padrão, a pasta de trabalho e as credenciais.

Start-Process -FilePath "sort.exe"

Exemplo 2: Imprimir um arquivo de texto

Este exemplo inicia um processo que imprime o arquivo C:\PS-Test\MyFile.txt.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Exemplo 3: iniciar um processo para classificar itens para um novo arquivo

Este exemplo inicia um processo que classifica itens no arquivo TestSort.txt e retorna os itens classificados nos arquivos Sorted.txt. Todos os erros são gravados no arquivo SortError.txt. O parâmetro UseNewEnvironment especifica que o processo é executado com suas próprias variáveis de ambiente.

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

Este exemplo usa splatting para passar parâmetros para o cmdlet. Para obter mais informações, consulte about_Splatting.

Exemplo 4: iniciar um processo em uma janela maximizada

Este exemplo inicia o processo de Notepad.exe. Ele maximiza a janela e mantém a janela até que o processo seja concluído.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Exemplo 5: Iniciar o PowerShell como administrador

Este exemplo inicia o PowerShell usando a opção Executar como administrador.

Start-Process -FilePath "powershell" -Verb RunAs

Exemplo 6: Usando verbos diferentes para iniciar um processo

Este exemplo mostra como localizar os verbos que podem ser usados ao iniciar um processo. Os verbos disponíveis são determinados pela extensão de nome de arquivo do arquivo executado no processo.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.Verbs
open
runas
runasuser

O exemplo usa New-Object para criar um objeto System.Diagnostics.ProcessStartInfo para powershell.exe, o arquivo executado no processo do PowerShell. A propriedade Verbos do objeto ProcessStartInfo mostra que você pode usar o Abrir e RunAs verbos com powershell.exeou com qualquer processo que execute um arquivo .exe.

Exemplo 7: Especificando argumentos para o processo

Ambos os comandos iniciam o interpretador de comandos do Windows, emitindo um comando dir na pasta Program Files. Como esse nome de pasta contém um espaço, o valor precisa estar entre aspas de escape. Observe que o primeiro comando especifica uma cadeia de caracteres como ArgumentList. O segundo comando é uma matriz de cadeia de caracteres.

Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""

Parâmetros

-ArgumentList

Especifica parâmetros ou valores de parâmetro a serem usados quando esse cmdlet iniciar o processo. Os argumentos podem ser aceitos como uma única cadeia de caracteres com os argumentos separados por espaços ou como uma matriz de cadeias de caracteres separadas por vírgulas. O cmdlet une a matriz em uma única cadeia de caracteres com cada elemento da matriz separado por um único espaço.

As aspas externas das cadeias de caracteres do PowerShell não são incluídas quando os valores ArgumentList são passados para o novo processo. Se os parâmetros ou valores de parâmetro contiverem um espaço ou aspas, eles precisarão ser cercados por aspas duplas com escape. Para mais informações, consulte sobre_Regras_de_Citação.

Para obter os melhores resultados, use um único valor ArgumentList contendo todos os argumentos e todos os caracteres de aspas necessários.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:Argumentos

Conjuntos de parâmetros

(All)
Cargo:1
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Credential

Especifica uma conta de usuário que tem permissão para executar essa ação. Por padrão, o cmdlet usa as credenciais do usuário atual.

Digite um nome de usuário, como user01 ou Domain01\User01, ou insira um objeto PSCredential gerado pelo cmdlet Get-Credential. Se você digitar um nome de usuário, será solicitado que você insira a senha.

As credenciais são armazenadas em um objeto PSCredential e a senha é armazenada como um SecureString.

Observação

Para obter mais informações sobre a proteção de dados do SecureString, consulte Quão seguro é o SecureString?.

Propriedades do parâmetro

Tipo:PSCredential
Valor padrão:Current user
Dá suporte a curingas:False
DontShow:False
Aliases:RunAs

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-FilePath

Especifica o caminho opcional e o nome do arquivo do programa que é executado no processo. Insira o nome de um arquivo executável ou de um documento, como um arquivo .txt ou .doc, associado a um programa no computador. Este parâmetro é obrigatório.

Se você especificar apenas um nome de arquivo, use o parâmetro WorkingDirectory para especificar o caminho.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:PSPath

Conjuntos de parâmetros

(All)
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-LoadUserProfile

Indica que esse cmdlet carrega o perfil de usuário do Windows armazenado na chave do registro HKEY_USERS para o usuário atual.

Esse parâmetro não afeta os perfis do PowerShell. Para obter mais informações, consulte about_Profiles.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:Lup

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-NoNewWindow

Inicie o novo processo na janela do console atual. Por padrão, no Windows, o PowerShell abre uma nova janela.

Você não pode usar os parâmetros NoNewWindow e WindowStyle no mesmo comando.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:nnw

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-PassThru

Retorna um objeto de processo para cada processo iniciado pelo cmdlet. Por padrão, esse cmdlet não gera nenhuma saída.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-RedirectStandardError

Especifica um arquivo. Esse cmdlet envia todos os erros gerados pelo processo para um arquivo que você especificar. Insira o caminho e o nome do arquivo. Por padrão, os erros são exibidos no console.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:RSE

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-RedirectStandardInput

Especifica um arquivo. Esse cmdlet lê a entrada do arquivo especificado. Insira o caminho e o nome do arquivo de entrada. Por padrão, o processo obtém sua entrada do teclado.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:RSI

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-RedirectStandardOutput

Especifica um arquivo. Esse cmdlet envia a saída gerada pelo processo para um arquivo que você especificar. Insira o caminho e o nome do arquivo. Por padrão, a saída é exibida no console.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:RSO

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-UseNewEnvironment

Indica que esse cmdlet usa novas variáveis de ambiente especificadas para o processo. Por padrão, o processo iniciado é executado com as variáveis de ambiente herdadas do processo pai.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

Default
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Verb

Especifica um verbo a ser usado quando este cmdlet inicia o processo. Os verbos disponíveis são determinados pela extensão de nome de arquivo do arquivo executado no processo.

A tabela a seguir mostra os verbos de alguns tipos de arquivo de processo comuns.

Tipo de arquivo Verbos
.cmd Edit, Open, Print, , RunAsRunAsUser
.exe Open, , RunAsRunAsUser
.txt Open, , PrintPrintTo
.wav Open, Play

Para localizar os verbos que podem ser usados com o arquivo executado em um processo, use o cmdlet para criar um objeto System.Diagnostics.ProcessStartInfo para o arquivo. Os verbos disponíveis estão na propriedade Verbos do objeto ProcessStartInfo. Para obter detalhes, consulte os exemplos.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

UseShellExecute
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Wait

Indica que esse cmdlet aguarda o processo especificado e seus descendentes serem concluídos antes de aceitar mais entradas. Esse parâmetro suprime o prompt de comando ou mantém a janela até que os processos sejam concluídos.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-WindowStyle

Especifica o estado da janela usada para o novo processo. O valor padrão é Normal. Os valores aceitáveis para este parâmetro são:

  • Normal
  • Hidden
  • Minimized
  • Maximized

Você não pode usar os parâmetros WindowStyle e NoNewWindow no mesmo comando.

Propriedades do parâmetro

Tipo:ProcessWindowStyle
Valor padrão:None
Valores aceitos:Normal, Hidden, Minimized, Maximized
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-WorkingDirectory

Especifica o local em que o novo processo deve ser iniciado. O padrão é o local do arquivo executável ou documento que está sendo iniciado. Não há suporte para caractere curinga. O caminho não deve conter caracteres que seriam interpretados como curingas.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

None

Não é possível transferir objetos para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

Process

Quando você usa o parâmetro PassThru, esse cmdlet retorna um objeto Process.

Observações

O Windows PowerShell inclui os seguintes aliases para Start-Process:

  • saps
  • start

Os comandos nativos são arquivos executáveis instalados no sistema operacional. Esses executáveis podem ser executados em qualquer shell de linha de comando, como o PowerShell. Normalmente, você executa o comando exatamente como faria em bash ou cmd.exe. O cmdlet Start-Process pode ser usado para executar quaisquer comandos nativos, mas só deve ser usado quando você precisar controlar como o comando é executado.

Por padrão, Start-Process inicia um processo de forma assíncrona. O controle é retornado instantaneamente ao PowerShell mesmo que o novo processo ainda esteja em execução.

  • No sistema local, o processo iniciado continua independente do processo de chamada.
  • Em um sistema remoto, o novo processo é encerrado quando a sessão remota termina, imediatamente após o comando Start-Process. Portanto, você não pode usar Start-Process em uma sessão remota esperando que o processo iniciado sobreviva à sessão.

Se você precisar usar Start-Process em uma sessão remota, invoque-a com o parâmetro Wait. Ou você pode usar outros métodos para criar um novo processo no sistema remoto.

Ao usar o parâmetro Wait, Start-Process aguarda que a árvore de processo (o processo e todos os seus descendentes) saia antes de retornar o controle. Isso é diferente do comportamento do cmdlet Wait-Process, que aguarda apenas a saída dos processos especificados.

No Windows, o caso de uso mais comum para Start-Process é usar o parâmetro Wait para bloquear o progresso até que o novo processo seja encerrado. No sistema não Windows, isso raramente é necessário, pois o comportamento padrão para aplicativos de linha de comando é equivalente a Start-Process -Wait.

Esse cmdlet é implementado usando o método Start da classe System.Diagnostics.Process. Para obter mais informações sobre esse método, consulte Método Process.Start.