Start-Job
Inicia un trabajo en segundo plano de PowerShell.
Sintaxis
ComputerName (valor predeterminado)
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
El cmdlet Start-Job inicia un trabajo en segundo plano de PowerShell en el equipo local.
Un trabajo en segundo plano de PowerShell ejecuta un comando sin interactuar con la sesión actual. Cuando se inicia un trabajo en segundo plano, se devuelve inmediatamente un objeto de trabajo, incluso aunque el trabajo tarde mucho en finalizar. Puede seguir trabajando en la sesión sin interrupciones mientras se ejecuta la tarea.
El objeto de trabajo contiene información útil sobre el trabajo, pero no contiene los resultados del trabajo.
Cuando finalice el trabajo, use el cmdlet Receive-Job para obtener los resultados del trabajo. Para obtener más información sobre los trabajos en segundo plano, vea about_Jobs.
Para ejecutar un trabajo en segundo plano en un equipo remoto, use el parámetro AsJob que está disponible en muchos cmdlets o use el cmdlet Invoke-Command para ejecutar un comando Start-Job en el equipo remoto. Para obtener más información, vea about_Remote_Jobs.
A partir de PowerShell 3.0, Start-Job puede iniciar instancias de tipos de trabajo personalizados, como trabajos programados. Para obtener información sobre cómo usar Start-Job para iniciar trabajos con tipos personalizados, consulte los documentos de ayuda de la característica de tipo de trabajo.
Ejemplos
Ejemplo 1: Iniciar un trabajo en segundo plano
En este ejemplo se inicia un trabajo que se ejecuta en segundo plano en el equipo local.
Start-Job -ScriptBlock {Get-Process}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Process
Start-Job usa el parámetro scriptBlock para ejecutar Get-Process como trabajo en segundo plano. Se muestra la información del trabajo y PowerShell regresa al indicador mientras el trabajo se ejecuta en segundo plano.
Ejemplo 2: Iniciar un trabajo mediante Invoke-Command
En este ejemplo se ejecuta un trabajo en varios equipos. El trabajo se almacena en una variable y se ejecuta mediante el nombre de la variable en la línea de comandos de PowerShell.
$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob
Se crea un trabajo que usa Invoke-Command y se almacena en la variable $jobWRM.
Invoke-Command usa el parámetro ComputerName para especificar los equipos en los que se ejecuta el trabajo.
Get-Content obtiene los nombres de servidor del archivo C:\Servers.txt.
El parámetro ScriptBlock especifica un comando que Get-Service obtiene el servicio WinRM. El parámetro JobName especifica un nombre descriptivo para el trabajo, WinRM. El parámetro ThrottleLimit limita el número de comandos simultáneos a 16. El parámetro AsJob inicia un trabajo en segundo plano que ejecuta el comando en los servidores.
Ejemplo 3: Obtener información del trabajo
En este ejemplo se obtiene información sobre un trabajo y se muestran los resultados de un trabajo completado que se ejecutó en el equipo 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 el parámetro ScriptBlock para ejecutar un comando que especifica Get-WinEvent para obtener el registro de eventos del sistema System. El parámetro Credential especifica una cuenta de usuario de dominio con permiso para ejecutar el trabajo en el equipo. El objeto de trabajo se almacena en la variable $j.
El objeto en la variable $j se envía por la canalización a Select-Object. El parámetro Property especifica un asterisco (*) para mostrar todas las propiedades del objeto de trabajo.
Ejemplo 4: Ejecución de un script como trabajo en segundo plano
En este ejemplo, se ejecuta un script en el equipo local como un trabajo en segundo plano.
Start-Job -FilePath C:\Scripts\Sample.ps1
Start-Job usa el parámetro FilePath para especificar un archivo de script almacenado en el equipo local.
Ejemplo 5: Obtención de un proceso mediante un trabajo en segundo plano
En este ejemplo se usa un trabajo en segundo plano para obtener un proceso especificado por nombre.
Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }
Start-Job usa el parámetro Name para especificar un nombre de trabajo descriptivo, PShellJob. El parámetro ScriptBlock especifica Get-Process para obtener procesos con el nombre PowerShell.
Ejemplo 6: Recopilar y guardar datos mediante un trabajo en segundo plano
En este ejemplo se inicia un trabajo que recopila una gran cantidad de datos de mapa y, a continuación, se guarda en un archivo .tif.
Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {
Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32
Start-Job usa el parámetro Name para especificar un nombre de trabajo amigable, GetMappingFiles. El parámetro InitializationScript ejecuta un bloque de script que importa el módulo MapFunctions. El parámetro ScriptBlock ejecuta Get-Map y Set-Content guarda los datos en la ubicación especificada por el parámetro path de. El parámetro RunAs32 ejecuta el proceso como de 32 bits, incluso en un sistema operativo de 64 bits.
Ejemplo 7: Pasar la entrada a un trabajo en segundo plano
En este ejemplo se usa el $input variable automática para procesar un objeto de entrada. Usa Receive-Job para ver el resultado del trabajo.
Start-Job -ScriptBlock { Get-Content $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep
Server01
Server02
Server03
Server04
Start-Job usa el parámetro ScriptBlock para ejecutar Get-Content con la variable automática $input. La variable $input obtiene objetos del parámetro InputObject.
Receive-Job usa el parámetro Name para especificar el trabajo y genera los resultados. El parámetro Keep guarda la salida del trabajo para que pueda verse nuevamente durante la sesión de PowerShell.
Parámetros
-ArgumentList
Especifica una matriz de argumentos, o valores de parámetros, para el script especificado por el parámetro FilePath .
Dado que todos los valores que siguen al nombre del parámetro ArgumentList se interpretan como valores de ArgumentList, especifique este parámetro como el último parámetro del comando.
Propiedades de parámetro
| Tipo: | Object[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Argumentos |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Authentication
Especifica el mecanismo que se usa para autenticar las credenciales de usuario.
Los valores aceptables para este parámetro son los siguientes:
- Predeterminado
- Básico
- Credssp
- Resumen
- Kerberos
- Negociar
- NegotiateWithImplicitCredential
El valor predeterminado es Default.
La autenticación CredSSP solo está disponible en Windows Vista, Windows Server 2008 y versiones posteriores del sistema operativo Windows.
Para obtener más información sobre los valores de este parámetro, vea AuthenticationMechanism.
Precaución
La autenticación del proveedor de soporte técnico de seguridad de credenciales (CredSSP), en la que las credenciales del usuario se pasan a un equipo remoto para autenticarse, está diseñada para comandos que requieren autenticación en más de un recurso, como el acceso a un recurso compartido de red remoto. Este mecanismo aumenta el riesgo de seguridad de la operación remota. Si el equipo remoto está en peligro, se pueden usar las credenciales que se pasan a ella para controlar la sesión de red.
Propiedades de parámetro
| Tipo: | AuthenticationMechanism |
| Valor predeterminado: | Default |
| Valores aceptados: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Credential
Especifica una cuenta de usuario que tiene permiso para realizar esta acción. Si no se especifica el parámetro Credential, el comando usa las credenciales del usuario actual.
Escriba un nombre de usuario, como User01 o Domain01\User01o escriba un objeto de PSCredential, como uno del cmdlet Get-Credential.
Propiedades de parámetro
| Tipo: | PSCredential |
| Valor predeterminado: | Current user |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-DefinitionName
Especifica el nombre de definición del trabajo que inicia este cmdlet. Use este parámetro para iniciar tipos de trabajo personalizados que tengan un nombre de definición, como trabajos programados.
Cuando se usa Start-Job para iniciar una instancia de un trabajo programado, el trabajo se inicia inmediatamente, independientemente de los desencadenadores de trabajo o las opciones de trabajo. La instancia de trabajo resultante es un trabajo programado, pero no se guarda en el disco como los trabajos programados desencadenados. No puede usar el parámetro ArgumentList de Start-Job para proporcionar valores para los parámetros de los scripts que se ejecutan en un trabajo programado. Para obtener más información, vea about_Scheduled_Jobs.
Este parámetro se introdujo en PowerShell 3.0.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
DefinitionName
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-DefinitionPath
Especifica la ruta de acceso a la definición del trabajo que este cmdlet inicia. Escriba la ruta de acceso de definición. La concatenación de los valores de los parámetros DefinitionPath y DefinitionName constituye la ruta completa de la definición de la tarea. Utiliza este parámetro para iniciar tipos de tareas personalizadas con una ruta de acceso definida, como tareas programadas.
Para los trabajos programados, el valor del parámetro DefinitionPath es $home\AppData\Local\Windows\PowerShell\ScheduledJob.
Este parámetro se introdujo en PowerShell 3.0.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
DefinitionName
| Posición: | 1 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-FilePath
Especifica un script local que Start-Job ejecuta como un trabajo en segundo plano. Escriba la ruta de acceso y el nombre de archivo del script o use la canalización para enviar una ruta de acceso al script a Start-Job. El script debe estar en el equipo local o en una carpeta a la que pueda acceder el equipo local.
Cuando se usa este parámetro, PowerShell convierte el contenido del archivo de script especificado en un bloque de script y ejecuta el bloque de script como un trabajo en segundo plano.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
FilePathComputerName
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-InitializationScript
Especifica los comandos que se ejecutan antes de que se inicie el trabajo. Para crear un bloque de script, incluya los comandos entre llaves ({}).
Use este parámetro para preparar la sesión en la que se ejecuta el trabajo. Por ejemplo, puede usarlo para agregar funciones, complementos y módulos a la sesión.
Propiedades de parámetro
| Tipo: | ScriptBlock |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | 1 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | 1 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | 1 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-InputObject
Especifica la entrada para el comando. Escriba una variable que contenga los objetos o escriba un comando o expresión que genere los objetos.
En el valor del parámetro ScriptBlock, use la variable automática $input para representar los objetos de entrada.
Propiedades de parámetro
| Tipo: | PSObject |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-LiteralPath
Especifica un script local que este cmdlet ejecuta como un trabajo en segundo plano. Escriba la ruta de acceso de un script del equipo local.
Start-Job usa el valor del parámetro LiteralPath exactamente tal y como está escrito. Ningún carácter se interpreta como carácter comodín. Si la ruta de acceso incluye caracteres de escape, escríbala entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | PSPath |
Conjuntos de parámetros
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Name
Especifica un nombre amigable para el nuevo trabajo. Puede usar el nombre para identificar el trabajo para otros cmdlets de trabajo, como el cmdlet Stop-Job.
El nombre descriptivo predeterminado es Job#, donde # es un número ordinal que se incrementa para cada trabajo.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-PSVersion
Especifica una versión.
Start-Job ejecuta el trabajo con la versión de PowerShell. Los valores aceptables para este parámetro son: 2.0 y 3.0.
Este parámetro se introdujo en PowerShell 3.0.
Propiedades de parámetro
| Tipo: | Version |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-RunAs32
Indica que Start-Job ejecuta el trabajo en un proceso de 32 bits.
RunAs32 obliga a que el trabajo se ejecute en un proceso de 32 bits, incluso en un sistema operativo de 64 bits.
En versiones de 64 bits de Windows 7 y Windows Server 2008 R2, cuando el comando Start-Job incluye el parámetro RunAs32, no puede usar el parámetro Credential para especificar las credenciales de otro usuario.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
ComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
FilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
LiteralFilePathComputerName
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-ScriptBlock
Especifica los comandos que se van a ejecutar en el trabajo en segundo plano. Para crear un bloque de script, incluya los comandos entre llaves ({}). Utilice la variable automática $input para acceder al valor del parámetro InputObject. Este parámetro es obligatorio.
Propiedades de parámetro
| Tipo: | ScriptBlock |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Comando |
Conjuntos de parámetros
ComputerName
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Type
Especifica el tipo personalizado para los trabajos iniciados por Start-Job. Escriba un nombre de tipo de trabajo personalizado, como PSScheduledJob para trabajos programados o PSWorkflowJob para trabajos de flujos de trabajo. Este parámetro no es válido para los trabajos en segundo plano estándar.
Este parámetro se introdujo en PowerShell 3.0.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
DefinitionName
| Posición: | 2 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
String
Puede usar la canalización para enviar un objeto con la propiedad Name al parámetro Name . Por ejemplo, puede canalizar un objeto FileInfo de Get-ChildItem a Start-Job.
Salidas
System.Management.Automation.PSRemotingJob
Start-Job devuelve un objeto PSRemotingJob que representa el trabajo que inició.
Notas
Para ejecutarse en segundo plano, Start-Job se ejecuta en su propia sesión en la sesión actual. Cuando se usa el cmdlet Invoke-Command para ejecutar un comando de Start-Job en una sesión en un equipo remoto, Start-Job se ejecuta en una sesión en la sesión remota.