L'équivalent de 'plus' ou 'moins' de commande Powershell?
Est-il un moyen pour paginer la sortie de la tuyauterie à certains "plus" de commande, qui est disponible dans linux\shells unix?
Vous devez vous connecter pour publier un commentaire.
Est-il un moyen pour paginer la sortie de la tuyauterie à certains "plus" de commande, qui est disponible dans linux\shells unix?
Vous devez vous connecter pour publier un commentaire.
Bien... Il n'y a "plus", qui est plus ou moins (...) la même chose que vous attendez d'autres plates-formes. Essayez l'exemple suivant:
Oui, il y a:
some-cmdlet | out-host -paging
less
est juste une grosse texte d'application de l'observateur qui acceptestdin
pour le texte. Vous pourriez vous diriger vers un fichier temp et de l'ouvrir dansnano
ouvim
MÊME MOAR POWERRRR! Pas au point. PowerShell est commebash
(mais il vaut mieux, à mon humble avis).less
n'est pas dansbash
; c'est un fichier binaire séparé. Donc, votre critique n'est pas valable.less
est Une Chose Très intéressante, si vous ne pouvez pas utiliser PS 😉 ). Le OO fonctionnalité n'est pas un préjudice; vous pouvez toujours traiter le texte comme un objet si vous le souhaitez. OO vous permet de travailler avec des flux sur plusieurs tuyaux dans des méthodes plus puissantes que le texte, si vous le souhaitez. Tout est dit, cependant, je suis totalement d'accord que le PS serait mieux si elle avaitless
en elle.oh
est pourOut-Host
, et les paramètres peuvent être abrégée si il n'y a pas de conflit, de sorte que la commande peut êtreSome-Cmdlet | oh -p
-rec
alias, voir le lien.dir -rec | more
est de mauvais conseils.Il sera la cause de powershell pour évaluer l'ensemble de la commande avant la sortie à l'écran, quelque chose qui n'est pas nécessaire pour que quelque chose comme la sortie de la pagination
Dans certains cas extrêmes, il peut entraîner une panne du système (par exemple,
dir 'C:\' | more
)Sur l'autre main, à l'aide de
out-host -paging
volonté de sortie de l'information à l'écran comme il est disponible.out-host -paging
fonctionne comme souhaité. La tuyauterie à traversmore
lors de l'exécution de la commande à distance est d'aucune utilité: l'ensemble du texte est affichée à la fois.out-host -paging
estoh -pa
.La Powershell Communauté Extensions ont une fonction pratique nommée "moins", qui donne une vue plus complète de style Unix, un ensemble de fonctionnalités à l'aide d'un portage de la copie de less.exe effectivement gérer la pagination.
Vous pouvez l'installer en commençant par une admin shell et en cours d'exécution:
(le
force
est de mettre à niveau les anciennes versions)Vous pouvez tuyau de chaînes, ou de donner des noms directe des paramètres.
Il travaille dans ConEmu et Powershell windows, mais malheureusement il ne fonctionne pas de la façon que vous attendez en vertu de la v2.0 ISE.
force
est de mettre à niveau les anciennes versions" semble un peu trompeur.Find-Package pscx | Install-Package -Force -scope currentuser -allowclobber
Je préfère le "moins" au cours de la commande la commande "plus. Avec la commande en moins, les résultats peuvent également être transférées vers l'arrière au lieu de juste avant.
Le "moins" de Git pour Windows fonctionne pour moi (Mon chemin
C:\Program Files (x86)\Git\usr\less.exe
. J'ai eu des erreurs dans Powershell avec le Gow version de "moins".Exemple:
ls|less
Pour enregistrer de frappe, j'ai ajouté de l'alias "l" pour le moins dans ma Powershell profil:
sal l "C:\Program Files (x86)\Git\bin\less.exe"
less
fan ici. Mais j'ai cette erreur. Tous les conseils? ________________________________________PS C:\Users\oli> Get-Content tmpf | out-host 'C:\Program Files\Git\usr\bin\less.exe' Out-Host : A positional parameter cannot be found that accepts argument 'C:\Program Files\Git\usr\bin\less.exe'. At line:1 char:20 + Get-Content tmpf | out-host 'C:\Program Files\Git\usr\bin\less.exe' + CategoryInfo : InvalidArgument: (:) [Out-Host], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.OutHostCommand
more
n'est pas utilisé pour limite de sortie, il est utilisé pour paginer de sortie et de le rendre plus facile à lire dans un terminal, si quoi que ce soit.Parlez-vous à l'aide de
head
ettail
? EggHeadCafe a un exemple de:pour émuler
head
ettail
.head
ettail
dans powershell maintenant: stackoverflow.com/a/41626586/1081043J'ai ajouté une fonction de définition d'alias et de mon profil par défaut à
%SystemRoot%\system32\windowspowershell\v1.0\profile.ps1
Cette fonction est principalement basée sur cette entrée de blog par Aman Dhally avec ajout de la gestion des exceptions pour en appuyant sur
Q
lors de la pagination.alors je peux l'appeler comme
dir -r | more
et il immédiatement commence paginé de sortie en raison de PowerShell du pipeline (contrairement à l'attente de la production complète avec more.com).Si vous avez VIM installé, j'ai bien profiter de
dir -r | vim -R -
. Malheureusement, ce souffre du même problème avecmore
(ie. pas de streaming).chat est un alias pour Obtenir du Contenu avec de gros fichiers, vous obtiendrez la -- More -- sortie au bas de la borne
Vous pouvez aussi, vous pouvez ajouter -attendre
-attendez, c'est comme utiliser la queue mais il est en fait la reprise de la commande de l'actualisation de la sortie
oh = Out-Host
Suggestion: Mettre le fichier dans un temporaire/jetable .fichier txt, puis laissez le système d'exploitation appeler votre éditeur de texte favori, celui qui est lié à l' .txt extension.
Get-Process | Out-File temp.txt ; .\temp.txt
Remarque: chaque fois que vous utilisez ce que vous écrasera toute pré-existant temp.txt fichier.
Choisissez le nom du fichier à bon escient.
Ci-dessus est juste une idée de base.
Prochaine étape serait de transformer cela en "plus" à l'aide d'alias ou de fonctions de profil, etc.
HTH,
Marcelo Finkielsztein
J'ai eu exactement cette question (bien que je voulais moins, pas plus) et trouvé la réponse de @richard-berg a travaillé pour moi, étant nouveau PowerShell (mais pas pour Linux), j'ai trouvé les choses qui manquent de cette réponse (pour moi) étaient les suivantes:
J'ai d'abord besoin d'y aller:
Find-Package pscx | Install-Package
qui a ensuite invité pour "installation de package nuget". J'ai fait cela mais avait ensuite utiliser l'
-AllowClobber
paramètre surInstall-Package
.ensuite, afin d'utiliser au moins, j'avais de:
Set-ExecutionPolicy RemoteSigned
qui ont tous travaillés 🙂