Cómo solucionar el error de entrada de datos del kernel en Windows
El error de entrada de datos del kernel (código de detención 0x0000007a) es causado por sectores defectuosos, virus, discos duros o RAM defectuosa.
¿Y si tu PC pudiera encargarse de las tareas rutinarias por ti? Con Windows PowerShell, puede. Aquí te explicamos cómo usar PowerShell para automatizar las tareas repetitivas del día a día que nadie quiere repetir una y otra vez.
Tabla de contenido
Microsoft PowerShell es una utilidad de línea de comandos y un lenguaje de scripting que constituye una potente herramienta para que los administradores automaticen una amplia gama de tareas en equipos y redes. PowerShell contiene componentes del Símbolo del sistema y está basado en .NET Framework. Si está leyendo sobre WebTech360, debería saber que PowerShell es la herramienta predilecta de los administradores de TI para gestionar grandes redes.
Aprender a usar PowerShell simplificará muchas tareas cotidianas tediosas. Además, podrá realizar cambios en todo el sistema a través de la red sin tener que configurar cada servidor individualmente. PowerShell se está convirtiendo en un componente esencial para la gestión de entornos de nube híbrida .
PowerShell tiene muchos usos diferentes para ayudarle a trabajar de forma más eficiente y mantener su red funcionando eficientemente. Los usos más básicos incluyen: programar actualizaciones diarias de los sistemas, generar informes sobre los procesos actuales, servicios periódicos y más. Si bien muchas de estas tareas se pueden realizar a través de la interfaz gráfica de usuario, el objetivo de PowerShell es agilizarlas.
Si tiene una tarea de mantenimiento rutinaria que tarda unos minutos en configurarse, puede crear un script con la misma funcionalidad en un solo comando llamado PowerShell. Así, la próxima vez que abra ese script, se ejecutará en segundo plano. Dominar la lógica de scripting de PowerShell, comprender el funcionamiento de los objetos y las variables, e implementarlo de forma inteligente en su red le hará preguntarse por qué no usó PowerShell antes.
Este tutorial cubrirá los conceptos básicos de PowerShell, lo cual será útil para quienes se inician en TI, especialmente si están familiarizados con el Símbolo del sistema de Windows. Explicará cómo usar herramientas y comandos básicos, cómo trabajar con archivos y carpetas, comprender objetos, usar variables y administrar servidores remotos.
Tras el lanzamiento de Windows NT, CMD.EXE se convirtió en la utilidad de línea de comandos de Windows. Aunque CMD.EXE heredó algunos elementos de su predecesor en DOS (COMMAN.COM), seguía basándose en un lenguaje de scripting bastante primitivo: utilizaba archivos de comandos de Windows (.CMD y .BAT). La incorporación de Windows Scripting Host y los lenguajes VBScript y JScript mejoró considerablemente las capacidades de scripting de la utilidad.
Estas tecnologías son una combinación bastante equilibrada de utilidades avanzadas de línea de comandos y entornos de scripting. La verdadera preocupación no es cuántos archivos CMD.EXE, .CMD y Windows Scripting Host se pueden manipular con ellas. La principal queja y preocupación es la realización de tareas aparentemente sencillas.
Mediante un marco de herramientas de línea de comandos y scripts, cualquier script medianamente completo requiere una combinación de comandos por lotes, un host de scripts de Windows y ejecutables independientes. Cada script utiliza diferentes convenciones para la ejecución, las solicitudes, el análisis y la devolución de datos.
El escaso soporte de variables en CMD.EXE, las interfaces inconsistentes y el acceso limitado a la configuración de Windows, junto con otra debilidad, dificultan la implementación y el uso de scripts de línea de comandos. ¿Cuál es esta "otra debilidad", se preguntarán? Es texto. En estas tecnologías, todo es texto. La salida de un comando o script es texto y debe analizarse y formatearse para que sirva de entrada para el siguiente comando. Este es el punto de partida básico que PowerShell toma de todos los shells tradicionales.
Los tres conceptos presentados en esta sección son solo los fundamentos para comprender los conceptos clave que forman la base de PowerShell. Deberá dedicar más tiempo a aprender y dominar los conceptos más avanzados a medida que se familiarice con los comandos de PowerShell.
PowerShell se instala de forma predeterminada en Windows 10, Windows 7, Windows Server 2008 R2 y versiones posteriores de Windows. Las versiones más recientes de PowerShell incorporan nuevas funciones y "cmdlets" (término de Microsoft para los comandos de PowerShell, que se pronuncia "command-lets") y se instalan con la versión correspondiente de Windows Management Framework (WMF).
Actualmente, WMF 5.1 es la última versión recomendada. En algunos casos, algunas funciones nuevas dependen del sistema operativo, además de la versión de WMF. Por ejemplo, Windows 8 y Windows Server 2012 admiten el cmdlet Test-NetConnection, que permite probar la conectividad a un puerto TCP/IP específico . Sin embargo, este cmdlet no está disponible en Windows 7, ni siquiera con la última versión de WMF.
En la mayoría de los sistemas Windows, los usuarios tendrán dos entornos de PowerShell disponibles: la consola de PowerShell y el ISE (Entorno de Scripting Integrado) de PowerShell. La consola de PowerShell se parece a una línea de comandos tradicional, pero con todas las funciones de PowerShell. Los nombres de variables, los bucles, el autocompletado de comandos y la canalización están disponibles desde la consola de PowerShell.
Para un uso más avanzado (como la creación de scripts), PowerShell ISE ofrece autocompletado de comandos, resaltado de código y la función de autocompletado de código Intellisense de Microsoft para ayudarle a crear y probar código de PowerShell. PowerShell ISE también le permite trabajar con varios scripts de PowerShell simultáneamente mediante la navegación por pestañas.
La base de los comandos de PowerShell son los cmdlets. Microsoft adoptó varias estrategias de diseño al crear cmdlets en PowerShell.
En primer lugar, está la capacidad de inferir fácilmente los nombres de los cmdlets, o al menos hacerlos más fáciles de encontrar. Los comandos o cmdlets de PowerShell también están diseñados para ser más fáciles de usar, con una sintaxis estandarizada, lo que facilita la creación de scripts desde la interfaz de línea de comandos.
Los cmdlets utilizan el formato verbo-sustantivo, como Get-Service, Stop-Service o Import-Csv. La parte verbal del nombre del cmdlet indica la acción realizada sobre el sustantivo. Normalmente, los cmdlets que se utilizan para recuperar información incluyen el verbo Get en su nombre, como Get-Process o Get-Content . Los comandos para modificar algo suelen empezar con el verbo Set , y los comandos para añadir una nueva entidad suelen empezar con Add o New .
En segundo lugar, los parámetros que se usan comúnmente en PowerShell también reciben nombres estandarizados. Por ejemplo, el parámetro -ComputerName permite ejecutar el cmdlet en uno o más equipos remotos. -Credential se utiliza para proporcionar un objeto de autenticación que contiene las credenciales del usuario para ejecutar el comando como un usuario específico.
Puede usar alias tanto para cmdlets como para parámetros para ahorrar pulsaciones de teclas y acortar la longitud total del comando (útil al encadenar varios comandos). Aunque estos alias no siempre utilizan las convenciones de nomenclatura estándar, siguen reflejando las utilidades tradicionales de la línea de comandos.
En PowerShell, alias como DIR, CD, DEL y CLS corresponden a los cmdlets Get-ChildItem, Set-Location, Remove-Item y Clear-Host, respectivamente. Los alias de parámetros pueden funcionar de dos maneras: pueden usar un alias predefinido proporcionado por el cmdlet o pueden crearse introduciendo suficientes caracteres para crear una coincidencia única entre los parámetros admitidos por el cmdlet.
La mayoría de los administradores de sistemas deben manipular archivos y carpetas durante su trabajo, ya sea moviendo una carpeta a otra ubicación en el servidor, archivando archivos de registro o buscando archivos grandes. En casos donde las mismas operaciones se repiten en muchos archivos, usar PowerShell para automatizarlas será una solución eficaz para ahorrar tiempo.
Para encontrar archivos y carpetas, una de las primeras herramientas de línea de comandos que un administrador aprendía en la era informática antigua era el comando dir. Este comando lista los archivos y carpetas contenidos en el directorio especificado.
PowerShell tiene un comando similar, el cmdlet Get-ChildItem . Este comando permite crear rápidamente una lista de archivos en un directorio, de modo que se puedan manipular mediante un comando de canalización o asignar la salida a una variable.
Get-ChildItem se puede usar simplemente proporcionando una ruta, ya sea mediante una canalización, con el parámetro -Path o directamente después del nombre del cmdlet. Para modificar la respuesta devuelta por Get-ChildItem, es necesario considerar algunos parámetros proporcionados por el cmdlet.
El parámetro -Filter permite buscar archivos. De forma predeterminada, Get-ChildItem solo devuelve elementos secundarios directos del directorio de destino. Esta funcionalidad se puede ampliar con el parámetro -Recurse , que busca recursivamente los directorios del directorio actual.
En PowerShell 4.0, Get-ChildItem añadió la capacidad de limitar los resultados a archivos o directorios mediante el modificador –File o –Directory . Las versiones anteriores de PowerShell debían pasar los resultados a Where-Object, filtrando por la propiedad PSIsContainer para determinarlo. A continuación se muestra un ejemplo de ambas técnicas utilizadas para devolver directorios contenidos en C:\Users:
Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}
Para detectar archivos ocultos o de sistema, se debe usar -Force . Get-ChildItem en PowerShell 4.0 y versiones posteriores también se puede usar para devolver solo archivos ocultos, de solo lectura o de sistema mediante -Hidden, -ReadOnly y –System , respectivamente. En versiones anteriores se podía lograr una funcionalidad similar filtrando la propiedad Mode con Where-Object:
Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}
Comprobar si el archivo existe
Normalmente, al trabajar con archivos, solo necesitamos saber si el archivo existe o si la ruta del directorio es válida. PowerShell proporciona un cmdlet para esto, llamado Test-Path, que devuelve un valor verdadero o falso.
Test-Path se utiliza como medida de precaución antes de intentar copiar o eliminar un archivo específico.
Copiar, mover y eliminar archivos
Copy-Item: copia uno o más archivos o directorios desde una ubicación, especificada por el parámetro -Path, a la ubicación especificada por la opción -Destination.
Mover elemento: mover un archivo o carpeta.
Al copiar o mover una estructura de directorio, se debe usar -Recurse para que el cmdlet realice la acción en el directorio y su contenido. En algunos casos, también se requiere -Force , como cuando se sobrescribe un archivo de solo lectura durante una operación de copia.
Remove-Item: eliminar archivo, carpeta.
Se debe utilizar el modificador -Force cuando se encuentra un archivo de solo lectura y se debe utilizar -Recurse cuando se elimina un directorio y su contenido.
Uso de PowerShell -WhatIf y -Confirm
Antes de realizar una eliminación masiva, use "WhatIf" . "WhatIf" le permite ver qué sucedería si ejecutara un script o comando, y si esto podría tener algún impacto negativo al eliminar datos empresariales importantes. Cabe destacar que "WhatIf" no se limita a operaciones con archivos; se usa ampliamente en PowerShell.
Para los scripts que se ejecutan manualmente o, peor aún, que tienen comandos dependientes que se ejecutan manualmente, considere usar -Confirm . Esto le permite requerir la interacción del usuario antes de que la operación se ejecute.
Scripts de PowerShell = Archivos por lotes con esteroides
PowerShell está escrito en el lenguaje .NET y se basa en gran medida en .NET Framework. Por lo tanto, PowerShell está diseñado como un shell orientado a objetos y un lenguaje de scripting. Todo en PowerShell se trata como un objeto con todas las capacidades de .NET Framework. Un comando expone una colección de objetos que pueden usarse mediante las propiedades y métodos de ese tipo de objeto. Al canalizar la salida de un comando a otro, PowerShell pasa el objeto, no solo la salida de texto del primer comando. Esto otorga al siguiente comando acceso completo a todas las propiedades y métodos del objeto en la canalización.
Tratar todo como un objeto y poder aceptar objetos entre comandos supone un gran cambio en la teoría de las utilidades de línea de comandos. Dicho esto, PowerShell sigue funcionando como un shell tradicional. Se pueden escribir y ejecutar comandos, scripts y ejecutables desde la línea de comandos, y los resultados se muestran como texto. Los archivos .CMD y .BAT de Windows, los VBScripts, los JScripts y los ejecutables que se ejecutan dentro de CMD.EXE siguen ejecutándose en PowerShell. Sin embargo, al no estar orientados a objetos, no tienen acceso completo a los objetos creados y utilizados en PowerShell. Estos scripts y ejecutables heredados seguirán tratándolo todo como texto, pero PowerShell se puede combinar con otras tecnologías. Esto es especialmente importante si se desea empezar a usar PowerShell con una colección de scripts existentes que no se pueden convertir todos a la vez.
Los cmdlets pueden aceptar parámetros para modificar su comportamiento. Al ejecutar un cmdlet o una función, puede proporcionar valores de parámetro para especificar qué, cuándo, dónde y cómo se ejecuta cada comando de PowerShell.
Por ejemplo, Get-Process recuperará y enumerará todos los procesos que se ejecutan en su sistema operativo:
¿Y si solo quieres obtener un proceso específico? Puedes hacerlo usando parámetros. Por ejemplo, para obtener todos los procesos de Slack, puedes usar el parámetro "Nombre" con el cmdlet "Get-Process":
Get-Process -Name Slack
Entonces solo verás procesos llamados "slack":
Consejo : Algunos parámetros son "posicionales", lo que significa que sus nombres son opcionales. En este caso, Get-Process -Name Slack y Get-Process Slack realizan la misma tarea.
Cada cmdlet acepta diferentes tipos de parámetros. Utilice el comando Get-Help para ver los parámetros aceptados del cmdlet en la sección SINTAXIS.
Get-Help Get-Process
Verá una lista de todas las formas posibles en que puede ejecutar el cmdlet indicado:
En este caso, el cmdlet Get-Process acepta parámetros como Nombre, Id., NombreDeEquipo, Módulo, InformaciónDeVersiónDeArchivo y otros parámetros comunes. Los símbolos aquí significan:
Símbolo |
Nombre |
Significado |
---|---|---|
Tambor |
El parámetro no acepta entrada |
|
- |
Guión |
Especifique el nombre del parámetro |
<> |
llaves |
Marcador de posición para texto |
[] |
paréntesis |
El parámetro puede aceptar uno o más valores. |
{} |
llaves |
El parámetro acepta un conjunto de valores. |
Los parámetros aceptan un conjunto de valores que indican el tipo de datos requeridos, como cadena, entero, booleano o fecha y hora. Por ejemplo, el siguiente comando:
Get-Process [[-Name] ]
... significa que el parámetro Nombre acepta uno o más valores de cadena, mientras que este comando:
Get-Process -Id
... significa que el parámetro Id acepta uno o más valores enteros.
El ejemplo anterior de Get-Process usó el parámetro Name para restringir los resultados. Sin embargo, si desea restringirlo a un proceso más específico, puede usar el parámetro ID , que requiere un entero, como se indica en su sintaxis.
Get-Process -Id 3016
Luego verás solo un proceso en la lista:
PowerShell procesa todos los datos como objetos. Para crear un script, estos objetos se ejecutan mediante una serie de cmdlets o funciones conectados mediante el símbolo de canalización (|). Elegir los cmdlets adecuados y conectarlos en una secuencia lógica mediante una canalización es fundamental para un script eficiente.
Supongamos que está creando un script para ordenar y mostrar los 5 archivos que ocupan más espacio en un directorio. Hay maneras más eficaces de escribir un script de ordenación de archivos, pero esta sencilla es fácil de entender:
Para hacer esto en PowerShell, use una canalización que se parezca a esto:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Ahora que tenemos un pipeline en funcionamiento, puedes guardarlo como un archivo de script PS1 para no tener que importarlo cada vez que lo uses.
La forma más sencilla de crear un archivo PS1 es pegar el script en el Bloc de notas y guardar el archivo con la extensión .ps1.
Una vez que haya creado el archivo PS1, puede usarlo en PowerShell ejecutando ./ScriptName.ps1 :
Consejo : si recibe un error de permisos, la solución más rápida es ejecutar PowerShell con derechos de administrador al ejecutar su script.
¡Felicitaciones! Ya puedes crear scripts de PowerShell PS1.
Leer y comprender las maravillas de las nuevas tecnologías es una cosa, pero usarlas es otra muy distinta. En el resto de este artículo, desarrollaremos un script de PowerShell para demostrar sus capacidades y cómo usarlo.
DIR es uno de los comandos más comunes en CMD.EXE . Este comando muestra todos los archivos y subdirectorios contenidos en un directorio principal (como se muestra en la Figura 1). Además del nombre de cada objeto, la información proporcionada incluye la fecha y hora de la última actualización y el tamaño de cada archivo. DIR también muestra el tamaño combinado de todos los archivos del directorio, así como el número total de archivos y subdirectorios.
Figura 1
Ejecutar DIR en PowerShell también genera una lista de directorios como la de la Figura 2, pero de forma ligeramente diferente. PowerShell no tiene el comando DIR, sino Get-ChildItem, que realiza la misma función. En PowerShell, DIR es un alias de Get-ChildItem. No pretendo explicar los alias en este artículo. En PowerShell, DIR es la abreviatura de Get-ChildItem.
DIR en PowerShell proporciona prácticamente la misma información mencionada anteriormente: una lista de archivos y carpetas, la fecha y hora de su última modificación y el tamaño de cada archivo. Sin embargo, carece de la información resumida que proporciona DIR en CMD.EXE: el tamaño total de todos los archivos de la carpeta, el número total de archivos y el número total de subcarpetas.
Figura 2
Para el ejemplo, necesitará crear un script de PowerShell que simule el comando CMD.EXE DIR. A continuación, explicaré las partes más esenciales de un script.
DIR.PS1: Encabezado
Un script de PowerShell consta de comandos de PowerShell en un archivo de texto sin formato con la extensión .PS1. En lugar de DIR, se usaría un archivo de texto llamado DIR.PS1.
Para ejecutar el script, escriba el siguiente comando en la pantalla de PowerShell:
.DIR.PS1 X:Folder
Donde X es la letra de la partición de la unidad (como C, D, E) y Carpeta es el nombre de la carpeta.
Si desea obtener información sobre la partición de una unidad, deberá usar Instrumental de Administración de Windows (WMI). Los detalles de WMI quedan fuera del alcance de este artículo, por lo que no los analizaremos aquí. Sin embargo, el código de PowerShell a continuación es bastante fácil de entender sin usar WMI. Puede crear una variable "$filter" para usarla con el comando Get-WmiObject. Este filtro le indica al comando Get-WmiObject que solo desea información sobre una unidad específica. Los resultados del comando Get-WmiObject se almacenan en una variable llamada $volInfo. Recuerde que en PowerShell todo es un objeto; $volInfo ahora es un objeto devuelto por Get-WmiObject.
$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter
Ahora tiene acceso a todos los objetos y métodos asociados al objeto. El número de serie del volumen es accesible mediante la propiedad VolumeSerialNumber. El número devuelto es una cadena de 8 caracteres. Sin embargo, a menudo se desea formatearlo como cuatro números separados por un guion. Esto se puede hacer de forma similar a la siguiente línea. El guion al final de la primera línea es el carácter de continuación de línea en PowerShell. Básicamente, le indica a PowerShell que la línea no se divide y que incluye la siguiente. Los saltos de línea no son necesarios al escribir código, pero para reducir el ancho y hacerlo más legible, se recomienda hacerlo.
$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)
Ahora que tiene un objeto $volInfo, puede escribir la información del encabezado DIR en la pantalla. Si la unidad no tiene nombre, el texto que se muestra en la pantalla será ligeramente diferente. Se utiliza una simple instrucción If-Else para comprobar si la propiedad VolumeName es una cadena vacía. La instrucción Write-Host se utiliza para escribir cada línea de texto en la pantalla.
If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")
El carácter "`n" al principio y al final del comando Write-Host se usa para insertar una nueva línea antes y después del texto. El comando Write-Host añade una nueva línea al final de cada línea. Por lo tanto, el efecto de "`n" es crear una línea en blanco antes y después del texto.
¿Observó el "-eq" en el comando If? Es un operador de comparación de igualdad. La siguiente tabla muestra todos los operadores de comparación:
-eq, -ieq | Comparar por |
-ne, -ine | La comparación no es igual |
-gt, -igt | Comparar mayor que |
-ge, -ige | Comparar mayor o igual a |
-lt, -ilt | Comparar más pequeño que |
-le, -ile | Comparar menor o igual a |
El carácter -i antes de los operadores de comparación indica que el operador no distingue entre mayúsculas y minúsculas.
Figura 3: Datos de salida del script que tienes actualmente
DIR.PS1: Lista de archivos/carpetas
Ahora, está listo para mostrar el contenido y las propiedades de esta carpeta. Primero, ejecute el comando Get-ChildItem de PowerShell para obtener una colección de archivos y pasarla al script como parámetro. El comando Get-ChildItem obtendrá una colección de objetos de archivo y carpeta, no solo sus nombres, sino que también los canalizará directamente al comando Sort-Object para ordenarlos. De forma predeterminada, el comando Sort-Object ordena los objetos según la propiedad Name. Por lo tanto, no es necesario especificar ningún otro parámetro. La colección de objetos ordenada se almacenará en una variable llamada $items.
$items = Get-ChildItem $args[0] | Sort-Object
Una vez que tenga una colección de objetos de archivo y carpeta, debe recorrerlos y mostrar las propiedades correspondientes. El comando para esto es ForEach. Para cada archivo o carpeta, las propiedades mostradas serán la fecha y hora de la última modificación, el nombre, la longitud o el tamaño del archivo. Las cadenas de aspecto extraño entre paréntesis son códigos de formato de cadena .NET. Se utilizan para alinear campos a la izquierda/derecha y dar formato a fechas, horas y números. Comprender estos códigos de formato de cadena no es muy importante, ya que no son esenciales para la naturaleza de este script.
La instrucción If determina si un objeto es un directorio o no. Si el primer carácter del atributo Mode es "d", el objeto es un directorio. Es necesario verificarlo, ya que el código para directorios suele ser diferente al de archivos.
Observe la línea $totalDirs++ dentro de la instrucción If. Este es un contador responsable de registrar el número de directorios. De igual forma, existe la variable $totalFiles que registra el tamaño total de todos los archivos. Estos valores siempre se calculan durante la ejecución, pero solo se muestran al finalizar el proceso de listado de archivos.
ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}
Figura 4: Muestra los datos de salida del script actualizado.
DIR.PS1: Pie de página
Solo queda escribir en pantalla el número total de archivos, directorios, el tamaño total de todos los archivos y el espacio libre en esta partición del disco. Para ello, necesitará usar las variables de contador ($totalFiles, $totalDirs, $totalSize) creadas en la sección anterior. Puede consultar la cantidad de espacio libre con la variable $volInfo creada al principio del script.
Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")
Figura 5: Muestra los datos de salida completos del script.
Se pueden realizar previsiones y mejoras
Aunque el script que usted crea produce un resultado casi idéntico al comando CMD.EXE DIR, hay algunas advertencias que debe tener en cuenta y algunas mejoras que se pueden realizar.
Puedes usar PowerShell para automatizar prácticamente cualquier cosa, como renombrar archivos por lotes para mantener la coherencia o iniciar aplicaciones automáticamente. Escribamos algunos scripts sencillos de Windows PowerShell para ver cómo funciona.
Nota : Si encuentra un error al ejecutar el script con respecto a la política de ejecución, es posible que deba permitir temporalmente la ejecución del script ejecutando "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass".
Cambiar el nombre de los archivos de una carpeta por lotes
Puedes usar PowerShell para copiar, mover y eliminar archivos en tu PC. También puedes renombrar archivos de un tipo específico en bloque. Por ejemplo, así puedes renombrar varios archivos de texto reemplazando el prefijo "oldco" por "newco" en sus nombres:
Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}
En el script anterior, ".txt" es el filtro de extensión de archivo. Puede modificarlo y configurarlo como .jpg, .docx, etc. para buscar diferentes tipos de archivos.
Aplicación de inicio automático
Si abre el mismo conjunto de aplicaciones todos los días, puede escribir un script de PowerShell para iniciarlas con un solo clic:
#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"
Pegue el script en un archivo del Bloc de notas y guárdelo como LaunchFavoriteApps.ps1. Luego, haga doble clic en el archivo para iniciar todas las aplicaciones que aparecen en el script.
Copiar archivos importantes a una ubicación de respaldo
Puede realizar copias de seguridad periódicas de archivos importantes en una ubicación de respaldo usando el siguiente script. Asegúrese de cambiar las rutas de origen y destino según sea necesario:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Dado que se descargan muchos tipos de archivos a diario, la carpeta Descargas puede saturarse rápidamente con todo tipo de archivos dispersos. Para solucionarlo, podemos escribir un script de PowerShell que ordene los archivos descargados en carpetas por tipo al final de cada día.
Abra un nuevo archivo del Bloc de notas y pegue el siguiente script. Asegúrese de cambiar la ruta de la carpeta de origen en el script para que coincida con la ruta de la carpeta de Descargas:
# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"
Para guardar el archivo, haga clic en Archivo > Guardar como e introduzca "OrganizateDownloadsFolder.ps1" como nombre. A continuación, haga clic en " Guardar como tipo" y seleccione " Todos los archivos ". Haga doble clic en el archivo " OrganizateDownloadsFolder.ps1" para ejecutar el script.
Por supuesto, escribir un script es una parte del proceso de automatización. La segunda parte consiste en garantizar que el script se ejecute automáticamente para realizar la tarea. Para ello, podemos crear tareas programadas que ejecuten el script a diario o según sea necesario.
Abra PowerShell, copie y pegue el siguiente script y presione Intro . Asegúrese de reemplazar "J:\OrganizeDownloadsFolder.ps1" con la ruta completa del archivo OrganizeDownloadsFolder.ps1 .
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"
Una vez hecho esto, presione Enter . El script creará una tarea programada en el Programador de Tareas para ejecutar el script de organización de archivos todos los días a las 17:00. Si prefiere una hora diferente, puede modificarla en el script anterior.
Además, puedes usar PowerShell para automatizar otras tareas cotidianas, como un script de monitoreo de espacio que te alerta cuando te quedas sin espacio libre en tu disco principal, proteger con contraseña lotes de documentos PDF e incluso aplicar fondos de pantalla en vivo desde tu carpeta de imágenes.
Aunque PowerShell es una potente utilidad y lenguaje de scripting, dominarlo y usarlo requiere algo de tiempo, especialmente si no se está familiarizado con el entorno .NET Framework. Espero que este artículo y el script de ejemplo sean útiles para quienes deseen comprender PowerShell. Sin embargo, el script de ejemplo creado en el artículo es bastante simple. Creo que se puede crear y desarrollar de forma más completa para aplicaciones más complejas.
El error de entrada de datos del kernel (código de detención 0x0000007a) es causado por sectores defectuosos, virus, discos duros o RAM defectuosa.
Seguridad de Windows está activada y protege de forma proactiva su dispositivo escaneando en busca de malware, virus y otras amenazas de seguridad.
Hay muchas formas de ver la configuración de su computadora, ver la configuración de su computadora portátil.
Las teclas de función Fn le brindan una forma más rápida y sencilla de controlar algunas funciones de hardware.
Este indicador fuera de lugar generalmente significa que se ha desactivado el cifrado de BitLocker, que hay una actualización que requiere reiniciar o que hay una actualización de firmware pendiente.
Puede utilizar uno de los siguientes 6 métodos para abrir Propiedades del equipo (o Propiedades del sistema) en Windows 10.
Si bloquea correctamente su red Wi-Fi para invitados, podrá compartir su conexión a Internet con cualquier visitante sin compartir ninguna otra información.
En este artículo, WebTech360 le guiará sobre cómo desactivar el firewall en Windows 11.
Cuando compraste tu computadora, arrancaba en segundos y funcionaba de maravilla. Pero las cosas han cambiado con el tiempo.
Este documento trata sobre cómo eliminar archivos .tmp, no sobre cómo borrar el historial de Internet o el caché del navegador.
Puede desactivar las aplicaciones en segundo plano de Windows 11 para optimizar el rendimiento, ahorrar batería y reducir el consumo de RAM.
Instalar una VPN ayudará a mantener su computadora con Windows 11 más segura.
Windows ofrece una serie de opciones de accesibilidad útiles, ideales para personalizar la interfaz de su PC, mejorar la comodidad e incluso operar cosas completamente con manos libres.
En Windows 10, Microsoft integró una nueva aplicación llamada Configuración. Esta aplicación es una aplicación Metro creada por Microsoft para reemplazar la clásica aplicación Panel de Control.
Las carpetas grandes del sistema ocupan mucho espacio. Muchas carpetas que creas, tras eliminarlas, vuelven a aparecer al cabo de un tiempo. Quizás sean carpetas basura que intentas eliminar.
El error de entrada de datos del kernel (código de detención 0x0000007a) es causado por sectores defectuosos, virus, discos duros o RAM defectuosa.
Seguridad de Windows está activada y protege de forma proactiva su dispositivo escaneando en busca de malware, virus y otras amenazas de seguridad.
Hay muchas formas de ver la configuración de su computadora, ver la configuración de su computadora portátil.
Las teclas de función Fn le brindan una forma más rápida y sencilla de controlar algunas funciones de hardware.
Este indicador fuera de lugar generalmente significa que se ha desactivado el cifrado de BitLocker, que hay una actualización que requiere reiniciar o que hay una actualización de firmware pendiente.
Puede utilizar uno de los siguientes 6 métodos para abrir Propiedades del equipo (o Propiedades del sistema) en Windows 10.
Si bloquea correctamente su red Wi-Fi para invitados, podrá compartir su conexión a Internet con cualquier visitante sin compartir ninguna otra información.
En este artículo, WebTech360 le guiará sobre cómo desactivar el firewall en Windows 11.
Cuando compraste tu computadora, arrancaba en segundos y funcionaba de maravilla. Pero las cosas han cambiado con el tiempo.
Este documento trata sobre cómo eliminar archivos .tmp, no sobre cómo borrar el historial de Internet o el caché del navegador.
Puede desactivar las aplicaciones en segundo plano de Windows 11 para optimizar el rendimiento, ahorrar batería y reducir el consumo de RAM.
Instalar una VPN ayudará a mantener su computadora con Windows 11 más segura.
Windows ofrece una serie de opciones de accesibilidad útiles, ideales para personalizar la interfaz de su PC, mejorar la comodidad e incluso operar cosas completamente con manos libres.
En Windows 10, Microsoft integró una nueva aplicación llamada Configuración. Esta aplicación es una aplicación Metro creada por Microsoft para reemplazar la clásica aplicación Panel de Control.
Las carpetas grandes del sistema ocupan mucho espacio. Muchas carpetas que creas, tras eliminarlas, vuelven a aparecer al cabo de un tiempo. Quizás sean carpetas basura que intentas eliminar.