Files
win-remote-toolkit/scripts/powershell/setup-network-share.ps1
2026-04-24 17:44:02 +08:00

102 lines
3.6 KiB
PowerShell

[Console]::OutputEncoding = [Text.Encoding]::UTF8
$ErrorActionPreference = 'Continue'
Write-Host "[*] Setting up network share access"
# Network share path
$sharePath = "\\192.168.88.231\rd"
$shortcutPath = "C:\Users\User\Desktop\Network Share (RD).lnk"
Write-Host "[*] Testing connection to network share"
Write-Host " Target: $sharePath"
# Test network connectivity
try {
$testConnection = Test-NetConnection -ComputerName "192.168.88.231" -Port 445 -WarningAction SilentlyContinue
if ($testConnection.TcpTestSucceeded) {
Write-Host "[OK] Network connection successful (Port 445 accessible)"
} else {
Write-Host "[!] Warning: Port 445 not accessible - SMB might be blocked"
}
} catch {
Write-Host "[!] Network test failed: $($_.Exception.Message)"
}
Write-Host "[*] Creating desktop shortcut to network share"
# Create shortcut using WScript.Shell
try {
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($shortcutPath)
$Shortcut.TargetPath = $sharePath
$Shortcut.WorkingDirectory = $sharePath
$Shortcut.IconLocation = "shell32.dll,4" # Folder icon
$Shortcut.Description = "Network Share - RD"
$Shortcut.Save()
Write-Host "[OK] Desktop shortcut created: Network Share (RD).lnk"
} catch {
Write-Host "[!] Failed to create shortcut: $($_.Exception.Message)"
}
Write-Host "[*] Testing share access"
# Test if we can access the share
try {
if (Test-Path $sharePath) {
Write-Host "[OK] Network share is accessible"
# Try to list contents
$items = Get-ChildItem $sharePath -ErrorAction SilentlyContinue | Select-Object -First 5
if ($items) {
Write-Host " Found $($items.Count) items in share"
} else {
Write-Host " Share appears empty or no read permission"
}
} else {
Write-Host "[!] Network share not accessible"
Write-Host " Possible issues:"
Write-Host " - Share doesn't exist"
Write-Host " - No network access"
Write-Host " - Authentication required"
Write-Host " - SMB protocol blocked"
}
} catch {
Write-Host "[!] Error accessing share: $($_.Exception.Message)"
}
Write-Host "[*] Checking if drive mapping is needed"
# Check if we should map as network drive
$availableDrives = Get-WmiObject -Class Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3} | Select-Object -ExpandProperty DeviceID
$networkDrives = Get-WmiObject -Class Win32_LogicalDisk | Where-Object {$_.DriveType -eq 4} | Select-Object -ExpandProperty DeviceID
Write-Host " Current network drives: $($networkDrives -join ', ')"
# Suggest mapping to Z: drive if not already used
if ("Z:" -notin ($availableDrives + $networkDrives)) {
Write-Host "[*] Attempting to map network drive Z:"
try {
& net use Z: $sharePath
Write-Host "[OK] Network drive Z: mapped successfully"
} catch {
Write-Host "[!] Drive mapping failed - may require credentials"
Write-Host " Manual mapping: net use Z: $sharePath /user:username"
}
} else {
Write-Host " Z: drive already in use"
}
Write-Host ""
Write-Host "[OK] Network share setup complete!"
Write-Host ""
Write-Host "Access methods:"
Write-Host "1. Double-click 'Network Share (RD).lnk' on desktop"
Write-Host "2. Type '$sharePath' in File Explorer address bar"
if ("Z:" -notin $availableDrives) {
Write-Host "3. Use Z: drive if mapping was successful"
}
Write-Host ""
Write-Host "If access is denied, you may need to:"
Write-Host "- Right-click shortcut > Run as administrator"
Write-Host "- Provide network credentials when prompted"