Blue Flower

cls

Function Add-Header-Row ($filename)
{

$content = Get-Content -Path $filename
$Output = @()
$Output += "Letter,Path"
$Output += $content
$Output | Out-file $filename
}

 

Function Get-File($initialDirectory)
{
[hashtable]$return = @{}
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null
$inputfile = New-Object System.Windows.Forms.OpenFileDialog
$inputfile.initialDirectory = "MyComputer"
$inputfile.filter = "CSV (*.csv) | *.csv"
$inputfile.showdialog() | Out-Null
$return.File = $inputfile.FileName
$return.SFile = $inputfile.safeFileName -replace ".{4}$"

return $return
}


#Import-Module ServerManager
#Add-WindowsFeature RSAT-AD-PowerShell
import-module activedirectory
$users = Get-File
$usersCSV = Import-Csv $users.File
Foreach ($user in $usersCSV)
{
write-host $user
$SAM = $user.sAMaccountName
$user1 = Get-ADUser -LDAPFilter "(&(sAMaccountName=$SAM))" -server prod.mgnx.cloud
write-host $user1
If ($user1)
{
$path = "\\MGXLMFSPRF001\m$\DriveMaps\" + $SAM
If(!(test-path $path))
{
New-Item -ItemType Directory -Force -Path $path
}
$inputfile = "<file location>"
$tmpoutputfile = $path + "\Mapped_drives.tmp"
$outputfile = $path + "\Mapped_drives.txt"


$ssa1 = "old_string_1"
$mgx1 = "new_string_1"
$ssa2 = "old_string_2"
$mgx2 = "new_string_2"
$ssa3 = "old_string_3"
$ssa4 = "old_string_4"
$ssa5 = "old_string_5"
$mgx3 = "new_string_3"

If(test-path $inputfile)
{
If ((get-childitem $inputFile).length -eq 0)
{
$message = "SSADrives.ini located at " + $inputfile + " is empty so was not copied"
write-host $message -ForegroundColor DarkYellow
Write-Output $message | Out-File -FilePath $OutFile -append
}
Else
{
Copy-Item -Path $inputfile -Destination $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("New connections will be remembered."),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("New connections will not be remembered."),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("-------------------------------------------------------------------------------"),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("Status "),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("OK "),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("Microsoft Windows Network"),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("Unavailable "),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) | ? {$_.trim() -ne "" } | set-content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape(" "),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape(" "),"," | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape(",,,,,\\ssa-intra.net\dfs,,,"),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape(",, Remote"),",,,,Remote" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) -ireplace [regex]::Escape("The command completed successfully."),"" | Set-Content $tmpoutputfile
(Get-Content $tmpoutputfile) | ? {$_.trim() -ne "" } | set-content $tmpoutputfile

Import-Csv $tmpoutputfile | select-object Local,Remote | Export-CSV $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape($ssa1),$mgx1 | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape($ssa2),$mgx2 | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape($ssa3),$mgx3 | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape($ssa4),$mgx3 | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape($ssa5),$mgx3 | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape('"Local"'),'"Letter"' | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape("Remote"),"Path" | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape("#TYPE Selected.System.Management.Automation.PSCustomObject"),"" | Set-Content $outputfile
(Get-Content $outputfile) -ireplace [regex]::Escape(' "'),'"' | Set-Content $outputfile
(Get-Content $outputfile)| Where-Object {$_ -notmatch 'NetPresenter' } | Set-Content $outputfile
(Get-Content $outputfile) | ? {$_.trim() -ne "" } | set-content $outputfile


}
}
Else
{
$message = "Cannot copy " + $inputfile + " as is does not exist"
write-host $message -ForegroundColor Yellow
Write-Output $message | Out-File -FilePath $OutFile -append
}
}
Else
{
$message = "Cannot process " + $folder + " as the user " + $owner + " is not in AD"
write-host $message -ForegroundColor DarkYellow
Write-Output $message | Out-File -FilePath $OutFile -append
}
}