Puncte:-2

Obține programatic calea completă către binar în powershell (care, unde, Get-Command)

drapel cn

Cum obțin calea absolută către un binar dat și o stochez într-o variabilă?

Care este echivalentul cu următoarele pentru Linux Bash în Windows Powershell?

user@disp985:~$ cale=`care gpg`
user@disp985:~$ echo $cale
/usr/bin/gpg
utilizator@disp985:~$ 

user@disp985:~$ $cale
gpg: caseta de taste „/home/user/.gnupg/pubring.kbx” creată
gpg: AVERTISMENT: nu a fost furnizată nicio comandă. Încerc să ghicesc ce vrei să spui...
gpg: Continuați și introduceți mesajul...

În Windows Powershell, există Obține-Comandă, dar rezultatul este greu de analizat programatic pentru un script.

PS C:\Users\user> Get-Command gpg.exe
 
CommandType Nume Versiune Sursa
----------- ---- ------- ------
Aplicația gpg.exe 2.2.28.... C:\Program Files (x86)\Gpg4win\..\GnuP...
 
 
PS C:\Utilizatori\utilizator>

Cum pot determina în mod programatic calea completă către un anumit binar în Windows Powershell, îl pot stoca într-o variabilă și îl pot executa?

drapel in
`abia trivial de analizat`? PowerShell este orientat pe obiecte, nu este nevoie să analizați nimic. Nu va deveni mai banal.
drapel in
În afară de asta, întrebarea este în afara subiectului, întrebările de programare aparțin [deci]. Sunt șanse mari ca această întrebare să fi fost deja răspuns acolo.
djdomi avatar
drapel za
Sunt de acord că este în afara subiectului din cauza erorii serverului
Michael Altfield avatar
drapel cn
nu sunt sigur cum se programează tastarea comenzilor într-un terminal Powershell, mi se pare o greșeală de server..
bjoster avatar
drapel cn
De obicei, nu este necesar să obțineți preferințele unui obiect ca variabilă (tip șir). Folosește-l oriunde te-ai afla. Cel mai „apropiat” de o ieșire de șir în lot (bash) ar fi `Format Get-Command | Format-List Source`, care ar fi destul de ușor de analizat.
Puncte:1
drapel cn

Pentru exemplul de comandă furnizat de întrebarea OP:

PS C:\Users\user> Get-Command gpg.exe
 
CommandType Nume Versiune Sursa
----------- ---- ------- ------
Aplicația gpg.exe 2.2.28.... C:\Program Files (x86)\Gpg4win\..\GnuP...
 
 
PS C:\Utilizatori\utilizator>

Puteți extrage câmpul „Sursă” cu următoarea sintaxă

PS C:\Utilizatori\utilizator> $(Get-Command gpg.exe).Sursa
C:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe

Apoi, puteți, de asemenea, să o stocați într-o variabilă și să o executați cu un ampersand (&) înaintea variabilei

PS C:\Users\user> $path=$(Get-Command gpg.exe).Sursa
PS C:\Utilizatori\utilizator> echo $cale
C:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe
PS C:\Utilizatori\utilizator> și $cale
gpg: AVERTISMENT: nu a fost furnizată nicio comandă. Încerc să ghicesc ce vrei să spui...
gpg: Continuați și introduceți mesajul...

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.