Fájlok és mappák használata
A PowerShell-meghajtókon való navigálás és a rajtuk lévő elemek manipulálása hasonló a Windows lemezmeghajtók fájljainak és mappáinak manipulálásához. Ez a cikk azt ismerteti, hogyan kezelhetők bizonyos fájl- és mappakezelési feladatok a PowerShell használatával.
Az összes fájl és mappa listázása egy mappában
Az összes elemet közvetlenül egy mappán belül is lekérheti a következővel Get-ChildItem
: . Adja hozzá az opcionális Force paramétert a rejtett vagy rendszerelemek megjelenítéséhez. Ez a parancs például a PowerShell-meghajtó C:
közvetlen tartalmát jeleníti meg.
Get-ChildItem -Path C:\ -Force
A parancs csak a közvetlenül tartalmazott elemeket sorolja fel, hasonlóan a dir
UNIX-rendszerhéjban vagy ls
a unix-rendszerhéjban cmd.exe
használt parancshoz. Az almappában lévő elemek megjelenítéséhez meg kell adnia a Recurse paramétert .
A következő parancs felsorolja a meghajtó összes elemét C:
:
Get-ChildItem -Path C:\ -Force -Recurse
Get-ChildItem
az Elérési út, a Szűrés, a Belefoglalás és a Kizárás paraméterekkel szűrheti az elemeket, de ezek általában csak a név alapján vannak megadva. Az elemek egyéb tulajdonságai alapján összetett szűrést végezhet a használatával Where-Object
.
A következő parancs megkeresi a Program Files mappában azokat a végrehajtható fájlokat, amelyek legutóbb 2005. október 1. után lettek módosítva, és amelyek nem kisebbek 1 megabájtnál, és nem nagyobbak 10 megabájtnál:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe |
Where-Object -FilterScript {
($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)
}
Fájlok és mappák másolása
A másolás a művelettel Copy-Item
történik. Az alábbi parancs biztonsági másolatot készít a PowerShell-profilszkriptről:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak')
}
A Test-Path
parancs ellenőrzi, hogy létezik-e a profilszkript.
Ha a célfájl már létezik, a másolási kísérlet meghiúsul. Meglévő cél felülírásához használja a Force paramétert:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') -Force
}
Ez a parancs akkor is működik, ha a cél írásvédett.
A mappamásolás ugyanúgy működik. Ez a parancs rekurzív módon másolja a mappát C:\temp\test1
az új mappába C:\temp\DeleteMe
:
Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe
Elemeket is másolhat. A következő parancs az összes .txt
fájlt átmásolja a következő C:\data
helyre C:\temp\text
:
Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text
Továbbra is futtathat natív parancsokat, és xcopy.exe
robocopy.exe
fájlokat másolhat.
Fájlok és mappák létrehozása
Az új elemek létrehozása minden PowerShell-szolgáltatón ugyanúgy működik. Ha egy PowerShell-szolgáltató több elemtípussal rendelkezik – például a FileSystem PowerShell-szolgáltató megkülönbözteti a könyvtárakat és a fájlokat –, meg kell adnia az elem típusát.
Ez a parancs létrehoz egy új mappát C:\temp\New Folder
:
New-Item -Path 'C:\temp\New Folder' -ItemType Directory
Ez a parancs létrehoz egy új üres fájlt C:\temp\New Folder\file.txt
New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File
Fontos
Ha a Force kapcsolót a New-Item
paranccsal egy mappa létrehozásához használja, és a mappa már létezik, az nem írja felül vagy cseréli le a mappát. Egyszerűen visszaadja a meglévő mappaobjektumot. Ha azonban már létező fájlon használja New-Item -Force
, a rendszer felülírja a fájlt.
A mappán belüli összes fájl és mappa eltávolítása
A tartalmazott elemeket eltávolíthatja a használatával Remove-Item
, de a rendszer kérni fogja, hogy erősítse meg az eltávolítást, ha az elem tartalmaz-e bármi mást. Ha például megkísérli törölni a más elemeket tartalmazó mappát C:\temp\DeleteMe
, a PowerShell megerősítést kér a mappa törlése előtt:
Remove-Item -Path C:\temp\DeleteMe
Confirm
The item at C:\temp\DeleteMe has children and the Recurse parameter wasn't
specified. If you continue, all children will be removed with the item. Are you
sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
Ha nem szeretné, hogy a rendszer minden egyes elemre rákérdezjen, adja meg a Recurse paramétert :
Remove-Item -Path C:\temp\DeleteMe -Recurse
Helyi mappa leképezése meghajtóként
A parancs használatával New-PSDrive
helyi mappát is leképezhet. A következő parancs létrehoz egy helyi meghajtót P:
, amely a helyi Program Files könyvtárban gyökerezik, és csak a PowerShell-munkamenetből látható:
New-PSDrive -Name P -Root $env:ProgramFiles -PSProvider FileSystem
A hálózati meghajtókhoz hasonlóan a PowerShellben leképezett meghajtók is azonnal láthatók a PowerShell-rendszerhéjban. Ha Fájlkezelő látható leképezett meghajtót szeretne létrehozni, használja a Persist paramétert. Az Adatmegőrzés funkcióval azonban csak távoli elérési utak használhatók.
Szövegfájl beolvasása tömbbe
A szöveges adatok egyik leggyakoribb tárolási formátuma egy különálló adatelemként kezelt különálló sorokat tartalmazó fájlban található. A Get-Content
parancsmag egy lépésben egy teljes fájl olvasására használható, ahogy az itt látható:
Get-Content -Path $PROFILE
# Load modules and change to the PowerShell-Docs repository folder
Import-Module posh-git
Set-Location C:\Git\PowerShell-Docs
Get-Content
tömbként kezeli a fájlból beolvasott adatokat, a fájltartalom soronként egy elemével. Ezt a visszaadott tartalom hosszának ellenőrzésével ellenőrizheti:
PS> (Get-Content -Path $PROFILE).Length
3
Ez a parancs az információk listájának PowerShell-be való beolvasásához hasznos. Tárolhat például egy számítógépneveket vagy IP-címeket tartalmazó listát a fájlban C:\temp\domainMembers.txt
, a fájl minden sorában egy-egy névvel. A Get-Content
fájl tartalmát lekérheti és elhelyezheti a változóban $Computers
:
$Computers = Get-Content -Path C:\temp\DomainMembers.txt
$Computers
mostantól egy tömb, amely minden elemben tartalmaz egy számítógépnevet.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: