ধরে নিলাম আমার কাছে ম্যাপড ড্রাইভ M:\
আছে \\SomeServer\SomeShare
এবং পাওয়ারশালে আমি ফোল্ডারে থাকি কীভাবে আমি এটিকে ইউএনসির M:\SomeFolder
পথে রূপান্তর করব, অর্থাৎ \\SomeServer\SomeShare\SomeFolder
।
ধরে নিলাম আমার কাছে ম্যাপড ড্রাইভ M:\
আছে \\SomeServer\SomeShare
এবং পাওয়ারশালে আমি ফোল্ডারে থাকি কীভাবে আমি এটিকে ইউএনসির M:\SomeFolder
পথে রূপান্তর করব, অর্থাৎ \\SomeServer\SomeShare\SomeFolder
।
উত্তর:
আমি পাওয়ারশেলে মোটামুটি নতুন, তাই নীচের কোডটি নিম্নমানের হতে পারে। তবে এটি আপনার যে তথ্য চান তা পাওয়া উচিত:
$currentDirectory = Get-Location
$currentDrive = Split-Path -qualifier $currentDirectory.Path
$logicalDisk = Gwmi Win32_LogicalDisk -filter "DriveType = 4 AND DeviceID = '$currentDrive'"
$uncPath = $currentDirectory.Path.Replace($currentDrive, $logicalDisk.ProviderName)
$ আনপথে ইউএনসি পাথটি থাকা উচিত যা আপনি সন্ধান করছেন।
স্টেক্সবারের জন্য রানআস স্ক্রিপ্টে আগ্রহী যে কোনও ব্যক্তির জন্য এটি হ'ল:
param([string] $username)
$path = Get-Location
$currentDrive = Split-Path -qualifier $path
$logicalDisk = Get-WmiObject Win32_LogicalDisk -filter "DeviceID = '$currentDrive'"
if ($logicalDisk.DriveType -eq 4)
{
$path = Join-Path $logicalDisk.ProviderName (Split-Path -NoQualifier $path)
}
$systemroot = [System.Environment]::SystemDirectory
&"$systemroot\runas.exe" /user:$username "$systemroot\windowspowershell\v1.0\powershell.exe -NoExit -Command \`" &{ Set-Location '$path' }\`""
এবং স্টেক্সবারে কমান্ড লাইনটি হ'ল:
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -Command "&{ &'%homedrive%%homepath%\RunAs.ps1' 'domain\username' }"
আপনি যেখানেই রানআস.পিএস 1 স্ক্রিপ্ট রেখেছেন সেই পথটি প্রতিস্থাপন করুন, আমি আমার বাড়ির ফোল্ডারের মূলটিতে আমার সঞ্চয় করতে চাই।
আমি জানি এটি একটি পুরানো প্রশ্ন, তবে কারও ক্ষেত্রে এর এক লাইন সংস্করণ প্রয়োজন:
$unc = (gwmi Win32_LogicalDisk -filter "DeviceID = '$((Get-Location).Drive.Name):'").ProviderName
আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন, তবে আমি এটি সম্পাদন করার জন্য অন্য একটি উপায় ভাগ করতে চেয়েছিলাম:
$drive = Get-PSDrive -Name (get-location).Drive.Name
$root = if($drive.DisplayRoot -ne $null){$drive.DisplayRoot} else {$drive.Root}
Join-Path -Path $root -ChildPath $drive.CurrentLocation
গেট-পিএসডিআরআইভ কোনও ড্রাইভ সম্পর্কিত সমস্ত তথ্য (নাম, ব্যবহৃত / মুক্ত স্থান, সরবরাহকারী, মূল এবং বর্তমান অবস্থান) ফিরিয়ে আনবে এবং বর্তমান ড্রাইভ লেটার হিসাবে নাম প্যারামিটারটি (গেট-লোকেশন ব্যবহার করে) একাধিক দৃশ্যে কাজ করার অনুমতি দেয় (এটি মেশিনে লোকাল ড্রাইভের তথ্যও ফিরিয়ে আনবে)।
এটি স্থানীয় এবং ম্যাপযুক্ত ড্রাইভ উভয় ক্ষেত্রেই কাজ করার জন্য তুলনাটি ড্রাইভ চিঠি বা নেটওয়ার্কের অবস্থানের সাথে $ মূলকে পপুলেট করার জন্য করা হয়। । রুট ড্রাইভ চিঠিটি ফেরত পাঠাবে, এবং .ডিসপ্লে রুটটি নেটওয়ার্কের পথটি আবার টেনে তুলবে (এটি যদি স্থানীয় পথ হয় তবে এটি তুলনার কারণ)
জয়েন-পাথ ব্যবহার করে, আপনি সেই পথটি একসাথে টানতে পারবেন, এটি কোনও স্থানীয় পাথ, নেটওয়ার্কের পথ এবং বর্তমান অবস্থান যদি কোনও ম্যাপযুক্ত ড্রাইভ থাকে তবে কোনও ড্রাইভ লেটার এবং বর্তমান অবস্থান ফিরিয়ে আনবে।
সুতরাং উত্তরের উত্তমকে এখানে এক-লাইনের সাথে সংযুক্ত করে; ইউএনসি হিসাবে বর্তমান পাথের পরীক্ষাগুলি, বর্তমান পথটিতে একটি ড্রাইভের মানচিত্র, নতুন ম্যাপযুক্ত ড্রাইভে পরিবর্তন, যদি ইতিমধ্যে ম্যাপযুক্ত ড্রাইভ থাকে তবে কোনও পদক্ষেপ নেওয়া হয় না।
IF ((Get-Location | %{$_.Drive}) -eq $NUL){$dltr=%{for($j=67;gdr($d=[char]++$j)2>0){}$d}; New-PSDrive –Name $dltr –PSProvider FileSystem –Root ((Get-Location).ProviderPath) –Persist; Set-Location -Path $dltr`: -PassThru}
ওপিকে উত্তর দেওয়ার উদ্দেশ্যে নয়, কেবল দরকারী সামগ্রী যুক্ত করুন। একটি স্ক্রিপ্ট ছিল যে আমার ইউএনসি পাথের পরিবর্তে ম্যাপিং ড্রাইভের দরকার ছিল, সুতরাং আমি কোনও ইউএনসি পিএস-তে ব্যবহার করা হচ্ছে কিনা তা পরীক্ষা করতে এটি করেছি, তারপরে সেই ইউএনসি পাথ ব্যবহার করে কোনও ড্রাইভে ম্যাপ করুন, তারপরে সেই ড্রাইভ চিঠিতে স্যুইচ করুন।
$CurrentFolder = "H:\Documents"
$Query = "Select * from Win32_NetworkConnection where LocalName = '" + $CurrentFolder.Substring( 0, 2 ) + "'"
( Get-WmiObject -Query $Query ).RemoteName
$Tst = $CurrentFolder.Substring( 0, 2 )
( Get-WmiObject -Query "Select * from Win32_NetworkConnection where LocalName = '$Tst'" ).RemoteName