So here is my PowerShell scripts adding a test folder and a test connection -
# The registry key
$regkey = get-item 'HKCU:\software\visionapp\vRD'
# read the configuration value
$config = $regkey | get-itemproperty -name configuration
# save it to a file in %temp% - just in case (you can also use backup from the app)
$savedConfig = join-path $env:temp vRd.saved
$config.configuration > $savedConfig
# convert string to xml - cool huh!
$config = [xml] $config.configuration
# show part of the xml file
$config.vRDConfigurationFile
# and drill down into the ConnectionsFolder
$config.vRDConfigurationFile.ConnectionsFolder
# Create a Folder xml element
$newfolder = $config.CreateElement("Folder")
# Set its name
$newfolder.SetAttribute("Name","Test folder")
# and add it as a child to the ConnectionsFolder
$config.vRDConfigurationFile.ConnectionsFolder.AppendChild($newfolder)
# show the added folder
$config.vRDConfigurationFile.ConnectionsFolder
# Add some attributes - note that you can do this before or after
# adding the xml element - $newfolder is a pointer to the live value
$newfolder.SetAttribute("Description","Testing dude!")
$newfolder.SetAttribute("Sorted","false")
# Link folder to a credentials GUID (I checked this beforehand)
$newfolder.SetAttribute("Credentials","785dd5ed-c75a-48e1-bb31-0b47e1e75fc3")
# Create a Connection xml element with some attributes
$newconnection = $config.CreateElement("Connection")
$newconnection.SetAttribute("Name","server.test.com")
$newconnection.SetAttribute("ServerName","server.test.com")
# Add it to the new folder
$newfolder.appendChild($newconnection)
# dump folder as XML
$latest=$config.vRDConfigurationFile.ConnectionsFolder.folder.count-1
$config.vRDConfigurationFile.ConnectionsFolder.folder[$latest].get_OuterXML()
# we have to do this several times, so a small function is easier
function addElement($xml,[string] $elementName, $elementText) {
$e=$xml.CreateElement($elementName)
$e.set_innerText($elementText)
return $e
}
# these values must be child elements - not attributes - to the connection element
# note the double-parenthesis - the inner is used to call the addElement function
# and return the value to the appendChild method
$newconnection.appendChild((addElement $config "SmartCard" "false"))
$newconnection.appendChild((addElement $config "ResolutionX" "1024"))
$newconnection.appendChild((addElement $config "ResolutionY" "768"))
$newconnection.appendChild((addElement $config "AutoSize" "true"))
$newconnection.appendChild((addElement $config "Description" "Test server"))
$newconnection.appendChild((addElement $config "Printer" "false"))
# Take credentials from parent folder
$newconnection.appendChild((addElement $config "InheritCredentials" "true"))
$newconnection.appendChild((addElement $config "Credentials" "00000000-0000-0000-0000-000000000000"))
$newconnection.appendChild((addElement $config "SeparateWindow" "false"))
$newconnection.appendChild((addElement $config "Console" "false"))
$newconnection.appendChild((addElement $config "Serial" "false"))
$newconnection.appendChild((addElement $config "LocalDrives" "false"))
$newconnection.appendChild((addElement $config "Audio" "false"))
$newconnection.appendChild((addElement $config "Port" "3389"))
# dump again
$latest=$config.vRDConfigurationFile.ConnectionsFolder.folder.count-1
$config.vRDConfigurationFile.ConnectionsFolder.folder[$latest].get_OuterXML()
# update configuration in registry
$regkey | set-itemproperty -name configuration -value $config.get_innerxml()
# folder and connection added!
PowerShell rocks! - did I mention that earlier...
2 comments:
Hi i dont know too much about power shell;was looking for a script that would add the server names and ip's from a text file.Thought this would do it but cant get it to work.get an error "Unexpected token 'get-itemproperty' in expression or statement
At C:\Scripts\s.ps1:7 char:35
+ $config = $regkey get-itemproperty <<<< -name configuration"
Hi Kiran.
The is a vertical bar (|) missing between $regkey and get-itemproperty. I have had this problem easier when my vertical bars were eaten during posting. I have fixed the script, but not tested it ;)
Per
Post a Comment