jkemp Posted February 1, 2018 Share Posted February 1, 2018 Looking to run a simple powershell script. Wanting to use variables so that I can simply change cmdlets as I need or add them in. There are 3 different commands I need to run, each running after the previous command completes. Here is what I have now, though when it runs the cmdlet does not work. It does work when run from powershell when I open it from the run command or start menu. The other issue I have is that the other two cmdlets will basically run right on top of each other. : #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <AutoItConstants.au3> $pws1 = "Powershell.exe" $Cmd1 = 'Get-AppXPackage -AllUsers | Foreach {{}Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"{}}' & '{Enter}' $Cmd2 = '"Set-Service UserManager -Startuptype "Automatic"' $Cmd3 = "Stop-Service tiledatamodelsvc" ;Run Powershell as a local admin Local $pws = RunAs("username", @ComputerName, "password", $RUN_LOGON_NOPROFILE, $pws1) WinWait("Windows ", "", 10) WinActive ("Windows ") Send ($Cmd1) sleep (10000) Send ("exit" & "{Enter}") While WinExists ("Windows " = 1) sleep (100) WEnd Link to comment Share on other sites More sharing options...
Subz Posted February 1, 2018 Share Posted February 1, 2018 You can just run a ps1 file manually or add them to a single command for example: #RequireAdmin Local $sCommand = 'PowerShell.exe ' ;~ Reinstall and Re-Register All Windows Apps for All Accounts ;~ $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}' ;~ Using the following for testing purposes only $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Write-Host "$($_.InstallLocation)\AppXManifest.xml"}' $sCommand &= ' ; ' $sCommand &= 'Set-Service UserManager -Startuptype "Automatic" ' $sCommand &= ' ; ' $sCommand &= 'Stop-Service tiledatamodelsvc' ;~ Last two lines are just so you can see the output $sCommand &= ' ; ' $sCommand &= 'Read-Host -Prompt "Press Enter to exit"' Run($sCommand) Link to comment Share on other sites More sharing options...
jkemp Posted February 6, 2018 Author Share Posted February 6, 2018 On 2/1/2018 at 6:18 PM, Subz said: You can just run a ps1 file manually or add them to a single command for example: #RequireAdmin Local $sCommand = 'PowerShell.exe ' ;~ Reinstall and Re-Register All Windows Apps for All Accounts ;~ $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}' ;~ Using the following for testing purposes only $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Write-Host "$($_.InstallLocation)\AppXManifest.xml"}' $sCommand &= ' ; ' $sCommand &= 'Set-Service UserManager -Startuptype "Automatic" ' $sCommand &= ' ; ' $sCommand &= 'Stop-Service tiledatamodelsvc' ;~ Last two lines are just so you can see the output $sCommand &= ' ; ' $sCommand &= 'Read-Host -Prompt "Press Enter to exit"' Run($sCommand) Any tips on getting this to run in an elevated state? I get it to run as is but with the cmdlet runs I get access denied. Link to comment Share on other sites More sharing options...
iamtheky Posted February 6, 2018 Share Posted February 6, 2018 (edited) what is the exact error? please post that. If its coming from powershell i imagine '-executionpolicy bypass' will fix the command. If it is an OS error there is a different issue. Edited February 6, 2018 by iamtheky ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
Subz Posted February 6, 2018 Share Posted February 6, 2018 Did you include the #RequireAdmin at the top of the script? This is all I required to run the script. Link to comment Share on other sites More sharing options...
iamtheky Posted February 6, 2018 Share Posted February 6, 2018 (edited) 1 hour ago, Subz said: Did you include the #RequireAdmin at the top of the script? This is all I required to run the script There are enterprise scenarios in which a local elevated token would not suffice for changing a service state and would require that you runas a DA account, but until we know what error it is (and who is throwing it) questions will abound. Edited February 6, 2018 by iamtheky just poor sentences all around ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
jkemp Posted February 7, 2018 Author Share Posted February 7, 2018 On 2/6/2018 at 10:10 AM, iamtheky said: what is the exact error? please post that. If its coming from powershell i imagine '-executionpolicy bypass' will fix the command. If it is an OS error there is a different issue. Sorry for the delayed responses, this is something I am working on, between my regular workload, to prepare for Win10 deployment. I am learning a new language, not to mention first programming, here so its taking me a little. Shortly after my last post I discovered that I had left out the #requireadmin line. So right now I am working on getting the shell window to stay open long enough for me to determine if everything is working properly. At the moment the shell window opens stuff happens and it closes. Thank you for your assistance. Link to comment Share on other sites More sharing options...
jkemp Posted February 7, 2018 Author Share Posted February 7, 2018 On 2/1/2018 at 6:18 PM, Subz said: You can just run a ps1 file manually or add them to a single command for example: #RequireAdmin Local $sCommand = 'PowerShell.exe ' ;~ Reinstall and Re-Register All Windows Apps for All Accounts ;~ $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}' ;~ Using the following for testing purposes only $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Write-Host "$($_.InstallLocation)\AppXManifest.xml"}' $sCommand &= ' ; ' $sCommand &= 'Set-Service UserManager -Startuptype "Automatic" ' $sCommand &= ' ; ' $sCommand &= 'Stop-Service tiledatamodelsvc' ;~ Last two lines are just so you can see the output $sCommand &= ' ; ' $sCommand &= 'Read-Host -Prompt "Press Enter to exit"' Run($sCommand) Right now as far as I can tell the last 2 lines are not working, as it close right away and I am not given the option to press enter. Link to comment Share on other sites More sharing options...
junkew Posted February 7, 2018 Share Posted February 7, 2018 https://www.autoitscript.com/autoit3/docs/libfunctions/_ScreenCapture_Capture.htm https://www.autoitscript.com/autoit3/docs/functions/Run.htm add some screencapture directly after your run($sCommand) hopefully you can catch the error then Run($sCommand) for $i=1 to 10 sleep(50) _ScreenCapture_Capture("check" & $i & ".jpg") next iamtheky and Subz 2 FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
jkemp Posted February 7, 2018 Author Share Posted February 7, 2018 Best I can get. It doesn't look as though it is running the other 2 commands and definitely not the last 2 lines script. Link to comment Share on other sites More sharing options...
junkew Posted February 7, 2018 Share Posted February 7, 2018 Your au3 script is fine. Your error is a ps script error probably then not best place to ask. Just google the ps error for directions. FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
iamtheky Posted February 7, 2018 Share Posted February 7, 2018 (edited) its a quotes issue for that error. everything looks to fire up until the last command where it appears to run without having the -Prompt argument in quotes. So that error is telling you that while it could run "Read-Host -Prompt Press" you cannot have "Enter" as an argument to press, which is what it would be if it all that shit was unquoted. experiment 1) leave all quotes alone and remove just the words in that sentence leaving the first word, Press. If that works then check to see if the powershell commands worked as desired.... experiment 2, kind of testing the same thing) make a variable that has a double quoted "Press Enter To Exit" wrapped in single quotes $var = '"Press Enter To Exit"' And then do 'Read-Host -Prompt ' & $var Edited February 7, 2018 by iamtheky ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
Subz Posted February 7, 2018 Share Posted February 7, 2018 The semi-colon (;) is like the ampersand (&) in cmd.exe it just joins commands together into one line. With regards to the last line, it's an issue with the double quotes as iamthekey pointed out. The code below should now work: nb: You will need to uncomment the line below ";~ Reinstall and Re-Register All Windows Apps for All Accounts" to reinstall/re-register all of the Windows Apps, the code below will only display all Windows Apps "Installlocation" property, change the UserManager Startuptype to Automatic and stop the tiledatamodelsvc service. #RequireAdmin Local $sCommand = 'PowerShell.exe ' ;~ Reinstall and Re-Register All Windows Apps for All Accounts ;~ $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}' ;~ Using the following for testing purposes only $sCommand &= 'Get-AppXPackage -AllUsers | Foreach {Write-Host "$($_.InstallLocation)\AppXManifest.xml"}' $sCommand &= ' ; ' $sCommand &= 'Set-Service UserManager -Startuptype "Automatic" ' $sCommand &= ' ; ' $sCommand &= 'Stop-Service tiledatamodelsvc' ;~ Last two lines are just so you can see the output $sCommand &= ' ; ' $sCommand &= "Read-Host -Prompt 'Press Enter to exit.'" Run($sCommand) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now