I recently had to do this and I think you are better off using appcmd because ,as you said, we don’t know what other changes may occur behind the scenes
Example,
appcmd list app
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "Default Web Site/develop" (applicationPool:mypool)
APP "Default Web Site/develop/xyz" (applicationPool:mypool)
In my case, I did have to rename starting from the child. Otherwise, appcmd won’t find the child site.
appcmd set app "Default Web Site/develop/xyz" -path:/B455/xyz
appcmd set app "Default Web Site/develop" -path:/B455
After
appcmd list app
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "Default Web Site/B455" (applicationPool:mypool)
APP "Default Web Site/B455/xyz" (applicationPool:mypool)
Note: appcmd can be found under %windir%\system32\inetsrv