Hogyan lehetne személyreszabott parancsokat létrehozni PowerShell-hez Windows 10-nél?
Mondjuk szeretnék egy olyat csinálni, hogy:
userinfo --name Adrian
és kilistázza azt, ami adrian-hoz tartozik.
VAGY
lock (ez csak annyit tesz, hogy kiírja, hogy "Zárva")
lock -all (ez azt írja, "Mind zárva")
lock -t1 (ezt azt, "T1 zárva")
Tehát olyat, hogy a mögöttelévő dolgot értelmezi, amit beírok neki, de ne legyen kötelező megadni neki kritériumot (azaz mintha lenne egy alapértelmezett értéke, mint egy Switch-ben).
Remélem érthető ahogy felvázoltam.
Ha a felhasználóneved XXXX, akkor a gépeden ezt a fájlt hozd létre, ha még nem létezik:
C:\Users\XXXX\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Ez a fájl minden alkalommal lefut, akárhányszor megnyitod a PowerShell-t a te felhasználói fiókoddal.
Egyébként az ún. cmdlet-ek a következő sémára épülnek:
[ige]-[főnév] (mindezt PascalCase-ben)
Vagyis mit csinálsz mivel. Vagyis a userinfo parancsodat inkább hívnám List-UserInfo-nak, ha kilistáz valamit. Mellesleg a paraméterek egy kötőjellel kezdődnek:
List-UserInfo -Name Adrian
Valami ilyesmi tartalommal tömném tele a fájlt:
function List-UserInfo([string] $Name) {
#kód
}
Ha egy paramétert kötelező megadni, azt kikényszerítheted:
if (Test-Path "variable:$Name") {
#hibát dobsz Write-Error-ral, hogy a Name változónak nem volt érték adva
}
Harmadik dolog: a PowerShell objektumorientált. Szóval ahelyett, hogy Write-Host-tal kiírodatod a dolgokat, azt szokás csinálni, hogy egy objektumot adsz vissza eredményként. A teljes kódot bemásolom valami kódmegosztóba:
Negyedik dolog: Használd a Windows PowerShell ISE-t kódszerkesztéshez.
Ez mind szép és jó, csak:
"... Tehát olyat, hogy a mögöttelévő dolgot értelmezi, amit beírok neki, de ne legyen kötelező megadni neki kritériumot..."
"Ha egy paramétert kötelező megadni, azt kikényszerítheted:"
Azt írtam, hogy HA [...] kötelező. Nyilván ha nem kötelező, nem teszel bele ilyen kódot. Kérlek, kicsit használd az eszed!
Hogyha nem teszem bele azt a részt, és nem írok be mögé semmit, nem dob ki semmit.
Teszteld a kódot. Én megtettem.
Hidd már el, hogy én is teszteltem a kódot és tudom, hogy jól működik. Te csinálsz valami hülyeséget. De legyen...
function Test-Script([string] $Param) {
Write-Host 'Haha'
}
Függetlenül attól, hogy adtál-e értéket a param-nak, kiírja, hogy Haha:
Test-Script
Test-Script -Param 'asd'
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!