Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De element som du ser i PowerShell-enheter, till exempel filer och mappar eller registernycklar, kallas Objekt i PowerShell. Cmdletarna för att arbeta med objektet har substantivet Objekt i deras namn.
Utdata från kommandot Get-Command -Noun Item visar att det finns nio PowerShell-objekt-cmdletar.
Get-Command -Noun Item
CommandType Name Definition
----------- ---- ----------
Cmdlet Clear-Item Clear-Item [-Path] <String[]...
Cmdlet Copy-Item Copy-Item [-Path] <String[]>...
Cmdlet Get-Item Get-Item [-Path] <String[]> ...
Cmdlet Invoke-Item Invoke-Item [-Path] <String[...
Cmdlet Move-Item Move-Item [-Path] <String[]>...
Cmdlet New-Item New-Item [-Path] <String[]> ...
Cmdlet Remove-Item Remove-Item [-Path] <String[...
Cmdlet Rename-Item Rename-Item [-Path] <String>...
Cmdlet Set-Item Set-Item [-Path] <String[]> ...
Skapa nya objekt
Om du vill skapa ett nytt objekt i filsystemet använder du cmdleten New-Item. Inkludera parametern Path med sökvägen till objektet och parametern ItemType med värdet File eller Directory.
Om du till exempel vill skapa en ny katalog med namnet New.Directory i katalogen C:\Temp skriver du:
New-Item -Path C:\temp\New.Directory -ItemType Directory
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2006-05-18 11:29 AM New.Directory
Om du vill skapa en fil ändrar du värdet för parametern ItemType till File. Om du till exempel vill skapa en fil med namnet file1.txt i katalogen New.Directory skriver du:
New-Item -Path C:\temp\New.Directory\file1.txt -ItemType File
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-18 11:44 AM 0 file1
Du kan använda samma teknik för att skapa en ny registernyckel. Det är faktiskt enklare att skapa en registernyckel eftersom den enda objekttypen i Windows-registret är en nyckel. (Registerposter är objekt egenskaper.) Om du till exempel vill skapa en nyckel med namnet _Test i undernyckeln CurrentVersion skriver du:
New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test
Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
SKC VC Name Property
--- -- ---- --------
0 0 _Test {}
När du skriver en registersökväg måste du inkludera kolonet (:) i PowerShell-enhetsnamnen, HKLM: och HKCU:. Utan kolonet känner PowerShell inte igen enhetsnamnet i sökvägen.
Varför registervärden inte är objekt
När du använder cmdleten Get-ChildItem för att hitta objekten i en registernyckel visas aldrig faktiska registerposter eller deras värden.
Registernyckeln HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run innehåller till exempel vanligtvis flera registerposter som representerar program som körs när systemet startas.
Men när du använder Get-ChildItem för att leta efter underordnade objekt i nyckeln, kommer du endast att se undernyckeln OptionalComponents i nyckeln:
Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
SKC VC Name Property
--- -- ---- --------
3 0 OptionalComponents {}
Även om det vore praktiskt att behandla registerposter som objekt kan du inte ange en sökväg till en registerpost på ett sätt som säkerställer att den är unik. Sökvägsnotationen skiljer inte mellan registerundernyckeln med namnet Kör och registerposten (Standard) i undernyckeln Kör.
Eftersom registerpostnamn kan innehålla omvänt snedstreck (\), om registerposter var objekt, kan du inte använda sökvägsanteckningen för att skilja en registerpost med namnet Windows\CurrentVersion\Run från undernyckeln som finns i sökvägen.
Byta namn på befintliga objekt
Om du vill ändra namnet på en fil eller mapp använder du cmdleten Rename-Item. Följande kommando ändrar namnet på filen file1.txt till fileOne.txt.
Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt
Cmdleten Rename-Item kan ändra namnet på en fil eller mapp, men det går inte att flytta ett objekt. Följande kommando misslyckas eftersom det försöker flytta filen från katalogen New.Directory till temp-katalogen.
Rename-Item -Path C:\temp\New.Directory\fileOne.txt C:\temp\fileOne.txt
Rename-Item : can't rename because the target specified isn't a path.
At line:1 char:12
+ Rename-Item <<<< -Path C:\temp\New.Directory\fileOne C:\temp\fileOne.txt
Flytta objekt
Om du vill flytta en fil eller mapp använder du cmdleten Move-Item.
Följande kommando flyttar katalogen New.Directory från katalogen C:\temp till rotmappen på C:-enheten. Om du vill kontrollera att objektet har flyttats inkluderar du parametern PassThru i cmdleten Move-Item. Utan PassThruvisar Move-Item-cmdleten inga resultat.
Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru
Directory: Microsoft.PowerShell.Core\FileSystem::C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2006-05-18 12:14 PM New.Directory
Kopiering av objekt
Om du är bekant med kopieringsåtgärderna i andra skal, kan du tycka att beteendet hos Copy-Item cmdleten i PowerShell är ovanligt. När du kopierar ett objekt från en plats till en annan kopierar Copy-Item inte innehållet som standard.
Om du till exempel kopierar katalogen New.Directory från C:-enheten till katalogen C:\temp lyckas kommandot, men filerna i katalogen New.Directory kopieras inte.
Copy-Item -Path C:\New.Directory -Destination C:\temp
Om du visar innehållet i C:\temp\New.Directoryser du att det inte innehåller några filer:
PS> Get-ChildItem -Path C:\temp\New.Directory
PS>
Varför kopierar inte cmdleten Copy-Item innehållet till den nya platsen?
Cmdleten Copy-Item har utformats för att vara generisk; Det är inte bara för att kopiera filer och mappar.
Även när du kopierar filer och mappar kanske du bara vill kopiera containern och inte objekten i den.
Om du vill kopiera allt innehåll i en mapp inkluderar du parametern Recurse för cmdleten Copy-Item i kommandot . Om du redan har kopierat katalogen utan dess innehåll lägger du till parametern Force, som gör att du kan skriva över den tomma mappen.
Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -PassThru
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2006-05-18 1:53 PM New.Directory
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-18 11:44 AM 0 file1
Ta bort objekt
Om du vill ta bort filer och mappar använder du cmdleten Remove-Item. PowerShell-cmdletar, till exempel Remove-Item, som kan göra betydande, oåterkalleliga ändringar uppmanar ofta till bekräftelse när du anger dess kommandon. Om du till exempel försöker ta bort mappen New.Directory uppmanas du att bekräfta kommandot eftersom mappen innehåller filer:
Remove-Item C:\temp\New.Directory
Confirm
The item at C:\temp\New.Directory has children and the -Recurse parameter was not
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"):
Eftersom Yes är standardsvaret trycker du på Retur för att ta bort mappen och dess filer. Om du vill ta bort mappen utan att bekräfta använder du parametern Recurse.
Remove-Item C:\temp\New.Directory -Recurse
Utföra objekt
PowerShell använder cmdleten Invoke-Item för att utföra en standardåtgärd för en fil eller mapp. Den här standardåtgärden bestäms av standardprogramhanteraren i registret. effekten är densamma som om du dubbelklickar på objektet i Utforskaren.
Anta till exempel att du kör följande kommando:
Invoke-Item C:\WINDOWS
Ett Explorer-fönster som finns i C:\Windows visas, precis som om du hade dubbelklickat på mappen C:\Windows.
Om du anropar Boot.ini-filen på ett system före Windows Vista:
Invoke-Item C:\boot.ini
Om den .ini filtypen är associerad med Anteckningar öppnas boot.ini-filen i Anteckningar.