tutorial - El archivo Powershell ps1 "no se reconoce como un cmdlet, función, programa ejecutable o archivo de secuencia de comandos".
powershell tutorial (3)
Este es un error típico en muchas plataformas donde la ruta de su entorno no incluye su directorio actual. de modo que cuando ejecuta su script (o comando o programa, etc.), su entorno de ejecución se ve en todas partes excepto en su directorio actual / de trabajo.
Tratar
PS> ./listAllPaths.ps1 c:/ *.pdf testingPDF.txt
EDITAR: Después de leer sus comentarios, voy a sugerir que intente esto. En realidad no he verificado la lógica de su script PS. Simplemente estoy tratando de hacer que tu script se ejecute primero.
Intente editar su script como se muestra a continuación y ejecútelo como se muestra arriba
Function listAllPaths([string]$fromFolder, [string]$filter, [string]$printfile){
Get-ChildItem -Path $fromFolder -Include $filter -Recurse -Force -Name > $printfile
}
listAllPaths
Hice una función Powershell justo ahora y la guardé en un archivo ps1. Sin embargo, cuando intento ejecutarlo desde powershell, no se ejecuta.
Ya he cambiado la configuración para ejecutar código sin firmar al ingresar este comando:
set-executionpolicy remotesigned
La función es esta:
Function listAllPaths([string]$fromFolder, [string]$filter, [string]$printfile){
Get-ChildItem -Path $fromFolder -Include $filter -Recurse -Force -Name > $printfile
}
Lo que hace es crear un archivo de texto en el que se enumeran todas las rutas de acceso a un determinado archivo.
Lo puse directamente debajo de c: / y nombré el archivo listAllPaths, igual que la función.
Cuando entro en el siguiente comando dentro de Powershell:
PS> listAllPaths.ps1 c:/ *.pdf testingPDF.txt
Me sale un error diciendo:
El término ''listAllPaths.ps1'' no se reconoce como cmdlet, función, programa ejecutable o archivo de secuencia de comandos. Verifica el termino y intenta otra vez.
He intentado varias cosas y, sinceramente, no sé cómo hacer que esto funcione. Lo que espero es que se cree un archivo en la ruta dada, c: / en este ejemplo. Ese archivo que tiene el nombre testingPDF.txt y los contenidos que se generan esto.
¿Puede alguien decirme lo que estoy olvidando aquí?
Y no, Google no responde a todo. Traté de que uno ya está. No vendría a preguntar aquí si no hubiera probado los motores de búsqueda en línea.
Podría estar fuera de base aquí, pero ¿es que su script está definiendo una función, en lugar de ejecutarla? Quizás necesites "fuente" del script:
. ./listallpaths.ps1
... para que ahora su función "listallpaths" esté definida.
Si reemplaza "function listallpaths" con param y elimina el entorno {} de esta manera ...
param([string]$fromFolder, [string]$filter, [string]$printfile)
Get-ChildItem -Path $fromFolder -Include $filter -Recurse -Force -Name > $printfile
Tendrá un archivo de script al que puede llamar cuando sea necesario.
PS> ./listAllPaths.ps1 c:/ *.pdf testingPDF.txt
Como Matt aludió, al declarar la función, cuando llamó al script, crearía la función y luego saldría. Una secuencia de comandos de PowerShell es básicamente una función almacenada en un archivo (sin las llaves circundantes ... están implícitas), donde la función en sí se almacenaría en la memoria.