Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

New-PSDrive – montowanie udziału sieciowego

Termin Definicja
New-PSDrive – montowanie udziału sieciowego

New-PSDrive w PowerShell montuje udział sieciowy jako dysk PSDrive, dostępny w sesji skryptowej niezależnie od mapowań systemowych.

New-PSDrive – czym jest montowanie udziału sieciowego

New-PSDrive to polecenie PowerShell używane do tworzenia napędu logicznego w bieżącym środowisku pracy. W przypadku udziału sieciowego pozwala nadać zasobowi udostępnionemu przez inny komputer, urządzenie sieciowe albo system plików wygodną nazwę, na przykład Z: lub Projekty. Dzięki temu można odwoływać się do folderów znajdujących się poza lokalnym dyskiem w sposób podobny do pracy ze zwykłą ścieżką katalogu. Z perspektywy skryptu oznacza to łatwiejsze kopiowanie plików, odczytywanie dokumentów, tworzenie archiwów i wykonywanie operacji administracyjnych.

Warto rozróżnić dwa pojęcia. Klasyczne mapowanie dysku w systemie Windows zwykle tworzy zasób widoczny również w Eksploratorze plików i w innych programach uruchomionych w określonym kontekście użytkownika. New-PSDrive może natomiast utworzyć napęd PowerShell dostępny przede wszystkim w danej sesji powłoki. Taki napęd jest elementem przestrzeni dostawcy systemu plików PowerShell, dlatego można przechodzić do niego poleceniem Set-Location, sprawdzać jego zawartość przez Get-ChildItem i używać go w poleceniach operujących na ścieżkach.

Najprostsza postać polecenia wygląda następująco:

New-PSDrive -Name Projekty -PSProvider FileSystem -Root "\\komputer\udzial"

Parametr -Name określa nazwę napędu, -PSProvider FileSystem wskazuje dostawcę odpowiedzialnego za pliki, a -Root zawiera ścieżkę UNC do udziału. Po wykonaniu polecenia można użyć ścieżki Projekty:\. Dwukropek po nazwie napędu jest istotny, ponieważ odróżnia PSDrive od typowego fragmentu nazwy folderu.

New-PSDrive – kontekst techniczny i porównanie z mapowaniem dysku

Montowanie udziału przez New-PSDrive jest szczególnie użyteczne w skryptach, ponieważ pozwala opisać dostęp do zasobu wprost w kodzie. Nie trzeba zakładać, że w systemie istnieje już litera dysku przypisana do konkretnej lokalizacji. Skrypt może sam utworzyć potrzebny napęd, wykonać zadania, a następnie usunąć go przez Remove-PSDrive. Takie podejście ogranicza zależność od konfiguracji konkretnego stanowiska i zmniejsza ryzyko, że litera dysku będzie zajęta przez inny zasób.

Przykładowy zestaw operacji może wyglądać tak:

New-PSDrive -Name Dane -PSProvider FileSystem -Root "\\serwer-plikow\raporty"
Get-ChildItem -Path "Dane:\"
Remove-PSDrive -Name Dane

W przykładzie nazwa techniczna urządzenia jest tylko elementem ścieżki sieciowej i nie zmienia sposobu działania polecenia. Najważniejsza jest poprawna konstrukcja UNC, czyli zapis rozpoczynający się od dwóch ukośników odwrotnych, po których występuje nazwa komputera lub urządzenia oraz nazwa udziału. Błędna nazwa hosta, niedostępny udział, literówka w ścieżce albo brak uprawnień spowodują, że napęd nie zostanie utworzony lub nie będzie można z niego korzystać.

New-PSDrive może działać w zakresie bieżącej sesji albo zostać utworzony jako napęd dostępny szerzej dla użytkownika. W praktyce należy świadomie określić zakres poleceniem -Scope, jeśli skrypt jest uruchamiany w funkcji, module lub zagnieżdżonej sesji. Bez takiej decyzji napęd może być widoczny tylko tam, gdzie został utworzony. Jest to częsta przyczyna sytuacji, w której polecenie działa ręcznie w konsoli, ale nie działa w innym skrypcie lub zadaniu automatycznym.

Podobna ostrożność jest potrzebna przy uruchamianiu PowerShell jako administrator. Napędy i poświadczenia mogą być zależne od kontekstu użytkownika oraz poziomu podniesionych uprawnień. Zasób dostępny w zwykłej sesji nie zawsze będzie widoczny w sesji uruchomionej z innymi uprawnieniami. Dlatego przed wdrożeniem skryptu warto przetestować go dokładnie w takim kontekście, w jakim będzie wykonywany docelowo.

New-PSDrive – typowe problemy z dostępem do udziału

Jednym z najczęstszych problemów jest brak uwierzytelnienia. Sam fakt, że udział odpowiada na poziomie sieci, nie oznacza jeszcze, że bieżące konto ma prawo odczytu lub zapisu. W zależności od sytuacji można użyć parametru -Credential, przekazując obiekt poświadczeń utworzony na przykład przez Get-Credential. Warto jednak unikać wpisywania hasła bezpośrednio w treści skryptu. Dane logowania zapisane jawnym tekstem mogą zostać odczytane przez inne osoby lub trafić do kopii zapasowych kodu.

Przykład z poświadczeniami może wyglądać następująco:

$credential = Get-Credential
New-PSDrive -Name Archiwum -PSProvider FileSystem -Root "\\komputer\archiwum" -Credential $credential

Jeżeli zasób ma być dostępny po ponownym uruchomieniu systemu, pojawia się różnica między trwałym mapowaniem a napędem utworzonym wyłącznie na czas sesji. Parametr -Persist może utworzyć mapowanie współpracujące z systemem Windows, lecz jego zachowanie zależy od użytego dostawcy, kontekstu użytkownika i sposobu uruchomienia powłoki. W skryptach wykonywanych automatycznie często korzystniejsze jest jawne tworzenie napędu na początku zadania i usuwanie go po zakończeniu, zamiast polegać na stanie pozostawionym przez wcześniejszą sesję.

Problemy mogą występować także wtedy, gdy ścieżka zawiera spacje, znaki narodowe lub nawiasy. W takich przypadkach należy umieszczać ścieżki w cudzysłowie i preferować parametry nazwane. Do testów warto używać poleceń Test-Path, Get-PSDrive oraz Get-ChildItem. Przykładowo:

Test-Path "Dane:\raporty"
Get-PSDrive -Name Dane
Get-ChildItem -LiteralPath "Dane:\raporty"

-LiteralPath jest przydatne, gdy nazwa pliku lub katalogu zawiera znaki, które PowerShell mógłby potraktować jako wzorce. Przy kopiowaniu większych zbiorów danych trzeba dodatkowo sprawdzić, czy połączenie nie jest zrywane, czy nie ma ograniczeń zapisu oraz czy docelowy system plików obsługuje nazwy i rozmiary plików występujące w źródle.

New-PSDrive – praktyczne wskazówki do skryptów

Dobry skrypt powinien sprawdzać, czy napęd o wybranej nazwie już istnieje. Próba utworzenia drugiego napędu o tym samym identyfikatorze może zakończyć się błędem albo prowadzić do niejasności, z jakiej lokalizacji korzystają kolejne polecenia. Bezpieczniejszy schemat obejmuje usunięcie wcześniejszego napędu, utworzenie nowego i potwierdzenie dostępności ścieżki:

if (Get-PSDrive -Name Roboczy -ErrorAction SilentlyContinue) {
    Remove-PSDrive -Name Roboczy -Force
}
New-PSDrive -Name Roboczy -PSProvider FileSystem -Root "\\komputer\udzial"
if (-not (Test-Path "Roboczy:\")) {
    throw "Udział sieciowy jest niedostępny"
}

Warto stosować obsługę błędów przez -ErrorAction Stop i blok konstrukcji try, catch, finally. Dzięki temu skrypt może zarejestrować przyczynę problemu, zakończyć operację w kontrolowany sposób i usunąć utworzony napęd nawet wtedy, gdy kopiowanie albo odczyt pliku zakończy się niepowodzeniem. Należy też pamiętać, że samo utworzenie PSDrive nie sprawdza wszystkich uprawnień do podkatalogów. Dostęp do konkretnej ścieżki powinien być zweryfikowany dopiero przed właściwą operacją.

Przy kopiowaniu danych lepiej przekazywać pełne ścieżki i jasno określać, czy kopiowane są same pliki, czy również podkatalogi. Przydatne mogą być Copy-Item, Move-Item, Get-ChildItem i Remove-Item, ale operacje usuwania wymagają szczególnej kontroli. Dobrym zwyczajem jest najpierw wykonać podgląd przez -WhatIf, gdy dane polecenie obsługuje ten parametr, oraz ograniczyć zakres przez -LiteralPath lub precyzyjnie przygotowaną listę plików.

Nie należy zakładać, że napęd utworzony w jednym oknie PowerShell będzie dostępny w każdym innym programie. Aplikacja uruchomiona poza daną sesją może nie widzieć PSDrive o tej samej nazwie. Jeżeli zadanie wymaga współpracy z narzędziem zewnętrznym, można użyć pełnej ścieżki UNC albo upewnić się, że narzędzie działa w tym samym kontekście użytkownika i sesji.

New-PSDrive – kiedy zgłosić problem do serwisu

Do serwisu warto zgłosić się wtedy, gdy problem z New-PSDrive powtarza się mimo poprawnej ścieżki, prawidłowych danych logowania i potwierdzonego działania udziału z innych stanowisk. Szczególnej uwagi wymaga sytuacja, w której zasób raz jest widoczny, a po ponownym uruchomieniu komputera znika, polecenia działają tylko po uruchomieniu PowerShell jako administrator albo dostęp do plików jest niestabilny. Przyczyną może być konfiguracja profilu użytkownika, zasady zabezpieczeń, rozbieżność między sesją zwykłą i podniesioną, problem z usługą systemową, rozwiązywaniem nazw albo sterownikami urządzeń sieciowych.

Przed przekazaniem sprzętu dobrze przygotować dokładny opis: pełną treść komunikatu błędu, polecenie używane do utworzenia napędu, informację o tym, czy dostęp odbywa się po nazwie czy po adresie, oraz rezultat poleceń Get-PSDrive i Test-Path. Nie należy przesyłać haseł ani umieszczać ich w zrzutach ekranu. Taki zestaw informacji ułatwia odróżnienie błędu samego PowerShell od problemu z siecią, uprawnieniami lub systemem plików.

W Warszawskim Pogotowiu Komputerowym 24/7 można omówić przypadki, w których montowanie udziału sieciowego zakłóca pracę komputera, skryptów albo dostęp do ważnych danych. Analiza powinna obejmować nie tylko pojedyncze polecenie, lecz także sposób uruchamiania sesji, konto użytkownika, konfigurację sieci i zachowanie systemu po ponownym logowaniu. Dzięki temu można ustalić, czy wystarczy korekta skryptu, czy potrzebne jest szersze sprawdzenie komputera i jego połączenia z zasobem sieciowym.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę