Akses drive jaringan yang sudah dipetakan di PowerShell

8

Saya menjalankan instalasi Windows Server 2012 di dalam VMWare Workstation. Saya telah berbagi folder yang diaktifkan, jadi drive Z:dipetakan ke \\vmware-host. Saya dapat mengakses drive ini dengan benar di Explorer (saya dapat mengakses Z:di dalam cmd "normal") dan saya dapat membuka file dengan benar.

Saya membuka PowerShell dan mencoba melakukannya cd Z:dan saya mendapatkan kesalahan berikut:

cd: Tidak dapat menemukan jalur 'Z: \' karena tidak ada.

Mengapa PowerShell tidak dapat menemukan drive jaringan yang sudah dipetakan?

Saya mencari Google sedikit, dan menemukan New-PSDriveperintah. Saya menjalankan yang berikut:

New-PSDrive -Name 'Z' -PSProvider FileSystem -Root 'Z:\'

tapi saya masih mendapatkan kesalahan yang sama seperti di atas. Apa yang harus saya lakukan untuk mengakses folder bersama VMWare di dalam PowerShell.

Roket Hazmat
sumber
Apa yang Get-PSDrive -PSProvider FileSystemdilaporkan ketika Anda membuka konsol Powershell baru?
jscott
@jscott: Dalam konsol baru, saya melihat A, Cdan D. Di konsol saya sudah terbuka, saya juga melihat Z. Mengapa konsol baru tidak muncul Z?
Rocket Hazmat
3
Apakah Anda menjalankan Powershell yang ditinggikan? Jika demikian, coba jalankan tanpa "Jalankan sebagai administrator". Anda perlu memetakan ulang drive jika menjalankannya ditinggikan. stackoverflow.com/questions/4742992/…
jscott
@ jscott: Ini berjalan sebagai Administrator. Saya juga berlari Set-ExecutionPolicy -ExecutionPolicy Unrestricted. Saya menggunakan PowerShell untuk mencoba menjalankan skrip untuk memanggil New-ADUser.
Rocket Hazmat
@ jscott: Saya baru saja menjalankan PowerShell sebagai pengguna saya (bukan Administrator), dan itu dapat diakses Z:tanpa masalah.
Rocket Hazmat

Jawaban:

8

Anda perlu membuat pemetaan drive tersedia untuk pengguna yang Anda jalankan Powershell. Anda dapat melakukan hal berikut untuk memberikan pemetaan drive yang sama kepada pengguna:

net use Z: "\\vmware-host\Shared Folders"

Lihat pertanyaan SO berikut: Tidak dapat mengakses drive jaringan di PowerShell berjalan sebagai administrator

jscott
sumber
Bolehkah saya juga menyebutkan bahwa Powershell mendukung penggunaan PUSHD dan POPD (atau lebih formal: lokasi-push dan lokasi-pop) yang mungkin lebih cocok untuk memetakan sementara drive untuk operasi tertentu.
Get-HomeByFiveOClock
5

Apakah Anda memulai konsol PowerShell ini sebagai Administrator atau sebagai pengguna Anda saat ini?

Jika Anda menjalankannya dari command prompt yang tidak ditinggikan, maka ia akan melihat semua drive jaringan yang dipetakan secara lokal. Saya dalam situasi yang sama seperti Anda sekarang dan telah x:dipetakan ke \\vmware-host\[folder], dan Get-PSDrive -PSProvider FileSystemmenunjukkan semua drive saya yang dipetakan secara lokal.

Namun , jika saya memulai konsol ini sebagai Administrator, ia tidak melihat drive lokal saya yang dipetakan, seperti untuk prompt perintah yang ditinggikan konteks keamanan (kedua) yang berbeda digunakan untuk memuat aplikasi, yang tidak berbagi koneksi jaringan.

Berita baiknya adalah Anda pada dasarnya hanya perlu memetakan drive di konsol administrator hanya sekali dan itu akan tetap dalam konteks keamanan (sampai reboot, saya pikir).

Jika Anda ingin mengotomatisasi ini, Anda harus membaca skrip pemuatan otomatis saat Anda memulai sesi PowerShell. Pada dasarnya, jika Anda membuat folder di folder yang My Documentsdipanggil WindowsPowerShelldan di dalam yang membuat Microsoft.PowerShell_profile.ps1file, itu akan memicu setiap kali Anda memulai konsol PowerShell baru. Di sana Anda dapat menambahkan net useperintah, atau menambahkan fungsi kustom yang Anda tulis yang ingin Anda gunakan.

Sebagai contoh, saya memiliki satu yang mengubah kursor saya menjadi merah untuk konsol administratif, dan memiliki fungsi yang saya dapat dengan mudah memanggil untuk menandatangani skrip PS1 saya.

Mark Henderson
sumber
Ya, itulah yang terjadi di sini. Drive itu dipetakan sebagai pengguna saya, dan PowerShell berjalan sebagai Administrator. Saya sudah terbiasa dengan kerang Linux, bukan PowerShell.
Rocket Hazmat
Itu tip yang sangat bagus tentang prompt admin console. Apa yang Anda gunakan di profile.ps1 Anda untuk mendeteksi apakah sesi ditinggikan atau tidak?
stib