Ahogy a fejezet bevezetőjében említettem, a PowerShell kettős célt szolgál: jó shell és jó programnyelv próbál lenni. A jó shellre az jellemző, hogy kényelmes, könnyen kezelhető, keveset kell gépelni, „fél szavakból” is megérti a felhasználót. Ennek eszköze a néhány betűből álló alias (becenevek, álnevek, szinonimák) használatának lehetősége. Álnevet kapcsolhatunk (akár többet is) különböző PowerShell elemekhez. Az alias bármilyen parancsban, kifejezésben teljes értékű helyettesítője gazdájának, így nincs szükség az eredeti név begépelésére. Az álnevek természetesen szkriptekben is korlátozás nélkül használhatók, de alkalmazásuk jelentősen ronthatja a szkript olvashatóságát és hordozhatóságát. Ugyancsak a jobb olvashatóság miatt nem nagyon használok aliasokat a könyvben szereplő mintapéldákban és szkriptekben sem.
Álnevet a következő elemekhez rendelhetünk:
PowerShell függvények
PowerShell szkriptek
Fájlok
Bármilyen végrehajtható állomány (exe, com, cmd, vbs, stb.)
A PowerShell számos beépített álnévvel is rendelkezik, ezek közül néhánnyal (dir, cd, stb.) már a korábbi fejezetekben is találkozhattunk. Az álnevek teljes listáját a Get-Alias cmdlet jeleníti meg:
PS C:\> Get-Alias
CommandType Name Version
----------- ---- -------
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias asnp -> Add-PSSnapin
Alias cat -> Get-Content
Alias cd -> Set-Location
Alias CFS -> ConvertFrom-String 3.1.0.0
...
Rendelkezésünkre áll továbbá az „Alias:” meghajtó is, amely egy más módon teszi hozzáférhetővé a beceneveket:
PS C:\> Set-Location alias:
PS Alias:\> Get-ChildItem
Ha nem a teljes listára, hanem csak egy konkrét aliasra vagyunk kíváncsiak, akkor a következő parancsot használhatjuk:
PS Alias:\> Get-Alias dir
CommandType Name Version
----------- ---- -------
Alias dir -> Get-ChildItem
Megjegyzés
PowerShell 2.0-ban ennek a kifejezésnek másképp nézett ki a kimenete:
PS C:\> Get-Alias -name dir
CommandType Name Definition
----------- ---- ----------
Alias dir Get-ChildItem
Én személy szerint jobban szerettem ezt a megjelenítést, mert ez mutatja a valóságot, azaz, hogy van egy Name és egy Definition tulajdonságunk. Az újabb PowerShell verziókban megjelenő Name alatt megjelenő dir -> Get-ChildItem nem a valóságot mutatja, hanem az csak egy megjelenítési trükk. Ezekről majd a 1.9.8 Formázás testre szabása (Get‑FormatData, Update-FormatData) fejezetben lesz szó.
Kissé bonyolultabb a helyzet, ha az egy adott parancshoz használható aliasokat szeretnénk felderíteni (természetesen ilyenből több is lehet). Az alábbi parancs a Set-Location cmdlethez tartozó álneveket listázza ki (a parancs egyes részeinek jelentéséről a következő fejezetben lesz szó):
[27] PS C:\> Get-Alias | Where-Object {$_.Definition -eq "Set-Location"}
CommandType Name Version
----------- ---- -------
Alias cd -> Set-Location
Alias chdir -> Set-Location
Alias sl -> Set-Location
A már ismert Get-Alias cmdleten kívül az alábbi listában látható négy további parancs is az aliasokkal kapcsolatos különféle műveletek elvégzésére szolgál.
PS C:\> Get-Help *-alias
Name Category Synopsis
---- -------- --------
Export-Alias Cmdlet Exports information a...
Get-Alias Cmdlet Gets the aliases for ...
Import-Alias Cmdlet Imports an alias list...
New-Alias Cmdlet Creates a new alias.
Set-Alias Cmdlet Creates or changes an...
A New-Alias cmdlet segítségével új álneveket definiálhatunk, paraméterként az alias nevét és a vele helyettesítendő parancsot kell megadnunk. Az alábbi parancs a „word” aliast hozza létre, amely a továbbiakban a szövegszerkesztő egyszerű indítását teszi lehetővé (természetesen a winword.exe valódi helyét kell megadnunk):
PS C:\> New-Alias -name word -Value "c:\program files\microsoft office\office
10\winword.exe"
PS C:\> word
A létrehozott aliasok csak az adott munkameneten belül élnek, a rendszeresen használni kívánt darabokat a PowerShell profilba kell felvennünk (lásd később). Az Export-Alias cmdlet segítségével a teljes alias listát fájlba menthetjük, a fájl pedig (például egy másik számítógépen) az Import-Alias parancs segítségével tölthető vissza.
Megjegyzés
Érdekes, olyan álnév nincsen, hogy date, mégis működik a dolog:
[29] PS C:\> date
2011. május 13. 11:50:12
[30] PS C:\> get-alias date
Get-Alias : This command cannot find a matching alias
because alias with name
'date' do not exist.
At line:1 char:10
+ get-alias <<<< date
+
CategoryInfo : ObjectNotFound:
(date:String) [Get-Alias], Item
NotFoundException
+
FullyQualifiedErrorId : ItemNotFoundException,Microsoft.PowerShell.Comm
ands.GetAliasCommand
Ennek az az oka, hogy a nem létező parancsok elé a parancsértelmező megpróbálja elé illeszteni a Get- előtagot, és ha ez már létező parancs, akkor végrehajtja azt. Ez tehát jó néhány újabb, „rejtett” álnevet jelent a rendszerben.