New-Item to cmdlet PowerShella, którym tworzysz nowe elementy w bieżącym dostawcy (provider). Najczęściej będzie to plik albo katalog na dysku, ale ten sam cmdlet potrafi też założyć klucz lub wpis w rejestrze, dowiązanie symboliczne czy zmienną środowiskową — wszystko zależy od tego, w jakiej „przestrzeni” (FileSystem, Registry, Env) akurat działasz. W praktyce 90% czasu używasz go zamiast linuksowego touch i mkdir naraz.
Składnia i najważniejsze opcje
Podstawowa forma wygląda tak: New-Item [-Path] <ścieżka> -ItemType
-Path— ścieżka, w której powstanie element (parametr pozycyjny, więc często podajesz go bez nazwy).-Name— nazwa elementu osobno; przydatne, gdy-Pathwskazuje sam katalog docelowy.-ItemType— typ elementu:File,Directory,SymbolicLink,HardLinklubJunction.-Value— początkowa zawartość pliku (dla rejestru: wartość wpisu).-Force— nadpisuje istniejący element tylko do odczytu i tworzy brakujące katalogi pośrednie.-WhatIf— pokazuje, co by się stało, bez faktycznego tworzenia (sucha próba).-Confirm— prosi o potwierdzenie przed wykonaniem.
Przykłady użycia
New-Item -Path .\notatki.txt -ItemType File— tworzy pusty plik tekstowy w bieżącym katalogu.New-Item -Path C:\Projekty\app\logs -ItemType Directory— zakłada nowy katalog (a z-Forcetakże brakujące katalogi nadrzędne).New-Item -Path .\config.json -ItemType File -Value '{}'— tworzy plik i od razu wpisuje do niego treść.New-Item -ItemType SymbolicLink -Path C:\link -Target C:\dane— tworzy dowiązanie symboliczne wskazujące na inny katalog.New-Item -Path .\dziennik.log -ItemType File -Force— tworzy plik, a jeśli już istnieje, czyści jego zawartość.
Częste błędy i pułapki
Najboleśniejsza pułapka: -Force na istniejącym pliku nadpisuje go pustą zawartością, a nie tylko „dotyka”. Jeśli chciałeś jedynie zaktualizować datę modyfikacji jak w touch, stracisz dane. Dla katalogu jest łagodniej — -Force nie kasuje istniejącego folderu, tylko zwraca ten, który już jest.
Druga rzecz: SymbolicLink na Windowsie zwykle wymaga uruchomienia konsoli jako administrator. Wyjątkiem jest Windows 10 (build 14972 lub nowszy) z włączonym trybem programisty — wtedy elewacja nie jest potrzebna. Bez tego dostaniesz odmowę dostępu.
Pamiętaj też, że bez -ItemType w systemie plików PowerShell domyślnie utworzy plik, więc jeśli chciałeś katalog, a zapomniałeś typu, zrobi się coś innego niż myślisz.
Powiązane komendy: Remove-Item, Set-Content, Get-Item, Copy-Item oraz w Linuksie odpowiedniki touch i mkdir.