Start-Job
Inicia um trabalho em segundo plano do PowerShell.
Sintaxe
ComputerName (Predefinição)
Start-Job
[-ScriptBlock] <ScriptBlock>
[[-InitializationScript] <ScriptBlock>]
[-Name <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
DefinitionName
Start-Job
[-DefinitionName] <String>
[[-DefinitionPath] <String>]
[[-Type] <String>]
[<CommonParameters>]
FilePathComputerName
Start-Job
[-FilePath] <String>
[[-InitializationScript] <ScriptBlock>]
[-Name <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
LiteralFilePathComputerName
Start-Job
[[-InitializationScript] <ScriptBlock>]
-LiteralPath <String>
[-Name <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathVMId
Start-Job
[-VMGuid] <Guid[]>
[<CommonParameters>]
VMId
Start-Job
[-VMGuid] <Guid[]>
[<CommonParameters>]
FilePathVMName
Start-Job
-VMName <String[]>
[<CommonParameters>]
VMName
Start-Job
-VMName <String[]>
[<CommonParameters>]
Description
O cmdlet Start-Job inicia um trabalho em segundo plano do PowerShell no computador local.
Um trabalho em segundo plano do PowerShell executa um comando sem interagir com a sessão atual. Quando você inicia um trabalho em segundo plano, um objeto de trabalho retorna imediatamente, mesmo que o trabalho demore muito tempo para ser concluído. Você pode continuar a trabalhar na sessão sem interrupção enquanto a tarefa está a ser executada.
O objeto de trabalho contém informações úteis sobre o trabalho, mas não contém os resultados do trabalho.
Quando o trabalho terminar, use o cmdlet Receive-Job para obter os resultados do trabalho. Para obter mais informações sobre trabalhos em segundo plano, consulte about_Jobs.
Para executar um trabalho em segundo plano em um computador remoto, use o parâmetro AsJob que está disponível em muitos cmdlets ou use o cmdlet Invoke-Command para executar um comando Start-Job no computador remoto. Para obter mais informações, veja about_Remote_Jobs.
A partir do PowerShell 3.0, Start-Job pode iniciar instâncias de tipos de trabalho personalizados, como trabalhos agendados. Para obter informações sobre como usar Start-Job para iniciar trabalhos com tipos personalizados, consulte os documentos de ajuda para o recurso de tipo de trabalho.
Exemplos
Exemplo 1: Iniciar um trabalho em segundo plano
Este exemplo inicia um trabalho que é executado em segundo plano no computador local.
Start-Job -ScriptBlock {Get-Process}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Process
Start-Job usa o parâmetro ScriptBlock para executar Get-Process como um trabalho em segundo plano. As informações do trabalho são exibidas e o PowerShell retorna a um prompt enquanto o trabalho é executado em segundo plano.
Exemplo 2: Iniciar um trabalho usando Invoke-Command
Este exemplo executa um trabalho em vários computadores. O trabalho é armazenado em uma variável e é executado usando o nome da variável na linha de comando do PowerShell.
$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob
Um trabalho que usa Invoke-Command é criado e armazenado na variável $jobWRM.
Invoke-Command usa o parâmetro ComputerName para especificar os computadores onde o trabalho é executado.
Get-Content obtém os nomes dos servidores do arquivo C:\Servers.txt.
O parâmetro ScriptBlock especifica um comando que Get-Service obtém o serviço WinRM. O parâmetro JobName especifica um nome amigável para o trabalho, WinRM. O parâmetro ThrottleLimit limita o número de comandos simultâneos a 16. O parâmetro AsJob inicia um trabalho em segundo plano que executa o comando nos servidores.
Exemplo 3: Obter informações sobre o emprego
Este exemplo obtém informações sobre um trabalho e exibe os resultados de um trabalho concluído que foi executado no computador local.
$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-WinEvent -Log System
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id : 18
Name : Job18
ChildJobs : {Job19}
PSBeginTime : 8/8/2019 14:41:57
PSEndTime : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job usa o parâmetro ScriptBlock para executar um comando que especifica Get-WinEvent obter o log de do sistema. O parâmetro Credential especifica uma conta de usuário de domínio com permissão para executar o trabalho no computador. O objeto de trabalho é armazenado na variável $j.
O objeto na variável $j é enviado pelo pipeline para Select-Object. O parâmetro Property especifica um asterisco (*) para exibir todas as propriedades do objeto de trabalho.
Exemplo 4: Executar um script como um trabalho em segundo plano
Neste exemplo, um script no computador local é executado como um trabalho em segundo plano.
Start-Job -FilePath C:\Scripts\Sample.ps1
Start-Job usa o parâmetro FilePath para especificar um arquivo de script armazenado no computador local.
Exemplo 5: Obter um processo usando um trabalho em segundo plano
Este exemplo usa um trabalho em segundo plano para obter um processo especificado pelo nome.
Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }
Start-Job usa o parâmetro Name para especificar um nome de trabalho amigável, PShellJob. O parâmetro ScriptBlock especifica que é necessário Get-Process para obter processos com o nome PowerShell.
Exemplo 6: Coletar e salvar dados usando um trabalho em segundo plano
Este exemplo inicia um trabalho que coleta uma grande quantidade de dados de mapa e os salva em um arquivo .tif.
Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {
Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32
Start-Job usa o parâmetro Name para especificar um nome de trabalho amigável, GetMappingFiles. O parâmetro InitializationScript executa um bloco de script que importa o módulo MapFunctions. O parâmetro ScriptBlock é executado Get-Map e Set-Content salva os dados no local especificado pelo parâmetro Path. O parâmetro RunAs32 executa o processo como 32 bits, mesmo em um sistema operacional de 64 bits.
Exemplo 7: Passar a entrada para um trabalho em segundo plano
Este exemplo usa a variável automática $input para processar um objeto de entrada. Use Receive-Job para exibir a saída da tarefa.
Start-Job -ScriptBlock { Get-Content $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep
Server01
Server02
Server03
Server04
Start-Job usa o parâmetro ScriptBlock para executar Get-Content com a variável automática $input. A variável $input obtém objetos do parâmetro InputObject.
Receive-Job usa o parâmetro Name para especificar o trabalho e produz os resultados. O parâmetro Keep guarda o resultado do trabalho, permitindo que seja visualizada novamente durante a sessão do PowerShell.
Parâmetros
-ArgumentList
Especifica uma matriz de argumentos, ou valores de parâmetro, para o script especificado pelo parâmetro FilePath .
Como todos os valores que seguem o nome do parâmetro ArgumentList são interpretados como sendo valores de ArgumentList, especifique esse parâmetro como o último parâmetro no comando.
Propriedades dos parâmetros
| Tipo: | Object[] |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | Argumentos |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Authentication
Especifica o mecanismo usado para autenticar credenciais de usuário.
Os valores aceitáveis para este parâmetro são os seguintes:
- Predefinido
- Básico
- Credssp
- Resumo
- Kerberos
- Negociar
- NegociarComImplicitCredential
O valor padrão é Default.
A autenticação CredSSP está disponível apenas no Windows Vista, Windows Server 2008 e versões posteriores do sistema operacional Windows.
Para obter mais informações sobre os valores desse parâmetro, consulte AuthenticationMechanism.
Atenção
A autenticação CredSSP (Credential Security Support Provider), na qual as credenciais do usuário são passadas para um computador remoto para ser autenticado, foi projetada para comandos que exigem autenticação em mais de um recurso, como acessar um compartilhamento de rede remoto. Este mecanismo aumenta o risco de segurança da operação remota. Se o computador remoto estiver comprometido, as credenciais que são passadas para ele podem ser usadas para controlar a sessão de rede.
Propriedades dos parâmetros
| Tipo: | AuthenticationMechanism |
| Default value: | Default |
| Valores aceites: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Credential
Especifica uma conta de usuário que tem permissão para executar essa ação. Se o parâmetro Credential não for especificado, o comando usará as credenciais do usuário atual.
Digite um nome de usuário, como User01 ou Domain01\User01, ou insira um objeto PSCredential, como um do cmdlet Get-Credential.
Propriedades dos parâmetros
| Tipo: | PSCredential |
| Default value: | Current user |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-DefinitionName
Especifica o nome da definição do trabalho que este cmdlet inicia. Use esse parâmetro para iniciar tipos de trabalho personalizados que tenham um nome de definição, como trabalhos agendados.
Quando você usa Start-Job para iniciar uma instância de um trabalho agendado, o trabalho é iniciado imediatamente, independentemente dos gatilhos ou opções de trabalho. A instância de trabalho resultante é um trabalho agendado, mas não é salva em disco como os trabalhos agendados acionados. Não é possível usar o parâmetro ArgumentList de Start-Job para fornecer valores para parâmetros de scripts que são executados num trabalho agendado. Para obter mais informações, consulte about_Scheduled_Jobs.
Esse parâmetro foi introduzido no PowerShell 3.0.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
DefinitionName
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-DefinitionPath
Especifica o caminho da definição para a tarefa que este cmdlet inicia. Insira o caminho de definição. A concatenação dos valores dos parâmetros DefinitionPath e DefinitionName é o caminho totalmente qualificado da definição de trabalho. Use esse parâmetro para iniciar tipos de trabalho personalizados que tenham um caminho de definição, como trabalhos agendados.
Para trabalhos agendados, o valor do parâmetro DefinitionPath é $home\AppData\Local\Windows\PowerShell\ScheduledJob.
Esse parâmetro foi introduzido no PowerShell 3.0.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
DefinitionName
| Position: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-FilePath
Especifica um script local que Start-Job é executado como um trabalho em segundo plano. Insira o caminho e o nome do arquivo do script ou use o pipeline para enviar um caminho de script para Start-Job. O script deve estar no computador local ou em uma pasta que o computador local possa acessar.
Quando você usa esse parâmetro, o PowerShell converte o conteúdo do arquivo de script especificado em um bloco de script e executa o bloco de script como um trabalho em segundo plano.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
FilePathComputerName
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-InitializationScript
Especifica comandos que são executados antes do início do trabalho. Para criar um bloco de script, coloque os comandos entre chaves ({}).
Use este parâmetro para preparar a sessão na qual o trabalho é executado. Por exemplo, você pode usá-lo para adicionar funções, snap-ins e módulos à sessão.
Propriedades dos parâmetros
| Tipo: | ScriptBlock |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-InputObject
Especifica a entrada para o comando. Insira uma variável que contenha os objetos ou digite um comando ou expressão que gere os objetos.
No valor do parâmetro ScriptBlock, use a variável automática $input para representar os objetos de entrada.
Propriedades dos parâmetros
| Tipo: | PSObject |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-LiteralPath
Especifica um script local que esse cmdlet executa como um trabalho em segundo plano. Insira o caminho do script no computador local.
Start-Job usa o valor do parâmetro LiteralPath tal como foi escrito. Nenhum caractere é interpretado como um caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | PSPath |
Conjuntos de parâmetros
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Name
Especifica um nome amigável para o novo trabalho. Você pode usar o nome para identificar a tarefa a outros cmdlets de tarefa, como o cmdlet Stop-Job.
O nome amigável padrão é Job#, onde # é um número ordinal que é incrementado para cada trabalho.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
-PSVersion
Especifica uma versão.
Start-Job executa o trabalho com a versão do PowerShell. Os valores aceitáveis para este parâmetro são: 2.0 e 3.0.
Esse parâmetro foi introduzido no PowerShell 3.0.
Propriedades dos parâmetros
| Tipo: | Version |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-RunAs32
Indica que Start-Job executa o trabalho em um processo de 32 bits.
RunAs32 força o trabalho a ser executado em um processo de 32 bits, mesmo em um sistema operacional de 64 bits.
Nas versões de 64 bits do Windows 7 e do Windows Server 2008 R2, quando o comando Start-Job inclui o parâmetro RunAs32, não é possível usar o parâmetro Credential para especificar as credenciais de outro usuário.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | False |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
ComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
FilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
LiteralFilePathComputerName
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-ScriptBlock
Especifica os comandos a serem executados no trabalho em segundo plano. Para criar um bloco de script, coloque os comandos entre chaves ({}). Use a variável automática $input para aceder ao valor do parâmetro InputObject. Este parâmetro é obrigatório.
Propriedades dos parâmetros
| Tipo: | ScriptBlock |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | Comando |
Conjuntos de parâmetros
ComputerName
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Type
Especifica o tipo personalizado para trabalhos iniciados por Start-Job. Insira um nome de tipo de trabalho personalizado, como PSScheduledJob para trabalhos agendados ou PSWorkflowJob para trabalhos de fluxos de trabalho. Este parâmetro não é válido para trabalhos em segundo plano padrão.
Esse parâmetro foi introduzido no PowerShell 3.0.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
DefinitionName
| Position: | 2 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | 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
String
Você pode usar o pipeline para enviar um objeto com a propriedade Name para o parâmetro Name . Por exemplo, você pode canalizar um objeto FileInfo de Get-ChildItem para Start-Job.
Saídas
System.Management.Automation.PSRemotingJob
Start-Job retorna um objeto PSRemotingJob que representa o trabalho iniciado.
Notas
Para ser executado em segundo plano, Start-Job é executado em sua própria sessão na sessão atual. Quando você usa o cmdlet Invoke-Command para executar um comando Start-Job em uma sessão em um computador remoto, Start-Job é executado em uma sessão na sessão remota.