So the story is, I wanted to copy our subversion code repository from the REPO server over HTTPS to the local box to update the websites on it. We didn't want to put any passwords in the file, so we wanted to use the operator's MS domain username and password. It is important to note that our domain name has three letters, so we pull 4 out of the credentials. If your domain is more or less, you will have to pull out more or less.
######################################################### # # Script to copy Machine and Webconfigs from the ... repository to the local host. # # Created Aug 18, 2010 # Bryan Loveless # Props to "Catatonic Prime" for figuring out the Creds object thing # # # Requires Powershell 2.0 # # Change your Execution policy to RemoteSigned if running locally # by: Set-executionpolicy -executionpolicy RemoteSigned # #Prereqs: Run on local machine runnning as THE administrator. (right click, run as) # #Caviots: If the files dont seem to renew, make sure the repo on ... is updated # by running the svn update bat file in the root of C # called "...." . # Also, if it doesnt run as a script, you can copy/paste into POSH cmd line. # # ######################################################## #import the bitstransfer module to transfer files Import-Module BitsTransfer #get user credentials Write-Host "use ... domain when logging in (123\ABC123)" $Dirtycreds = Get-credential "123\USERNAME" #clean up the username, as it doesnt want a / before the username #one below only removes first character, need 4 removed to preserve domain in $DirtyCreds for later use #$creds = New-Object -typeName 'System.Management.Automation.PSCredential' -ArgumentList $Dirtycreds.UserName.Remove(0,1),$Dirtycreds.Password $creds = New-Object -typeName 'System.Management.Automation.PSCredential' -ArgumentList $Dirtycreds.UserName.Remove(0,4),$Dirtycreds.Password #####refresh common components to update svn on ..., dont have to do if pulling from HTTPS ##$session1 New-PSSession -ComputerName servername.fully.qualified.here ##Invoke-Command -Session $session1 ""filethatcleansupSVN"" #Import-Module BitsTransfer #set a timestamp to rename the file with, uses seconds so that it can be run more than once a minute $timestamp = Get-Date -UFormat %Y%m%d%H%M%S #set the path to the SVN server $svnserver = "servername.fully.qualified.here" #ask the user if they want a dev, test, prod, localhost config $machinetype = Read-Host "What type of machine is this? (dev, test, prod, localhost)" #below compares to see what the user wanted, then changes the variable for the path accordingly switch ($machinetype) { dev {$svnpath = "svn/projects/Configuration/Machine%20Configs/IIS7/2.0/Dev/" $smbpath = "\\$svnserver\c$\Projects\Configuration\Machine Configs\IIS7\2.0\Dev"} test {$svnpath = "svn/projects/Configuration/Machine%20Configs/IIS7/2.0/Test/" $smbpath = "\\$svnserver\c$\Projects\Configuration\Machine Configs\IIS7\2.0\Test"} prod {$svnpath = "svn/projects/Configuration/Machine%20Configs/IIS7/2.0/Prod/" $smbpath = "\\$svnserver\c$\Projects\Configuration\Machine Configs\IIS7\2.0\Prod"} localhost {$svnpath = "svn/projects/Configuration/Machine%20Configs/IIS7/2.0/localhost_developer/" $smbpath = "\\$svnserver\c$\Projects\Configuration\Machine Configs\IIS7\2.0\localhost_developer"} default { Write-Host "I dont know what you want. Close this and try again." break } } #set the path to the .net directory on the local machine $mypath = "C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG" #rename the old files rename-item -path "$mypath\web.config" -NewName web$timestamp.config rename-item -path "$mypath\machine.config" -NewName machine$timestamp.config #copy the files to the correct locations #HTTPs method below start-bitstransfer -Authentication basic -Displayname "grabwconfig" -credential $creds -Source "https://$svnserver/$svnpath/web.config" -Destination $mypath\web.config start-bitstransfer -Authentication basic -Displayname "grabmconfig" -credential $creds -Source "https://$svnserver/$svnpath/machine.config" -Destination $mypath\machine.config #Below replaced by HTTPS method #Copy-Item -Path "$smbpath/web.config" -Credential $creds -Destination "$mypath/web.Config" #Copy-Item -Path "$smbpath/web.config" -Destination "$mypath/web.Config" #Copy-Item -Path "$smbpath/machine.config" -Destination "$mypath/machine.Config" # this will only do the part below if a 64 bit machine $mypath = "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG" if (test-path $mypath) { #rename the old files rename-item -path $mypath\web.config -NewName web$timestamp.config rename-item -path $mypath\machine.config -NewName machine$timestamp.config #below replaced by HTTPs method # Copy-Item -Path "$smbpath/web.config" -Destination "$mypath/web.Config" # Copy-Item -Path "$smbpath/machine.config" -Destination "$mypath/machine.Config" #pull it from HTTPs start-bitstransfer -Authentication basic -Displayname "grabw64config" -credential $creds -Source "https://$svnserver/$svnpath/web.config" -Destination $mypath\web.config start-bitstransfer -Authentication basic -Displayname "grabm64config" -credential $creds -Source "https://$svnserver/$svnpath/machine.config" -Destination $mypath\machine.config } #copy applicationhost.config to the correct location and rename the old one $mypath = "C:\Windows\System32\inetsrv\config" $smbpath = "\\$svnserver\c$\Projects\Configuration\Machine Configs\IIS7" $svnpath = "svn/projects/Configuration/Machine Configs/IIS7/" rename-item -path $mypath\applicationHost.config -NewName applicationHost$timestamp.config start-bitstransfer -Authentication basic -Displayname "grabAHconfig" -credential $creds -Source "https://$svnserver/$svnpath/applicationHost.config" -Destination $mypath\applicationHost.config #below replaced by HTTPs method #Copy-item -path $smbpath\applicationHost.config -Destination "$mypath/applicationHost.config"
No comments:
Post a Comment