diff --git a/plugins/provisioners/shell/provisioner.rb b/plugins/provisioners/shell/provisioner.rb
index <HASH>..<HASH> 100644
--- a/plugins/provisioners/shell/provisioner.rb
+++ b/plugins/provisioners/shell/provisioner.rb
@@ -96,12 +96,10 @@ module VagrantPlugins
             exec_path.gsub!('/', '\\')
             exec_path = "c:#{exec_path}" if exec_path.start_with?("\\")
 
-            command = <<-EOH
-            $old = Get-ExecutionPolicy;
-            Set-ExecutionPolicy Unrestricted -force;
-            #{exec_path}#{args};
-            Set-ExecutionPolicy $old -force
-            EOH
+            # For PowerShell scripts bypass the execution policy
+            command = "#{exec_path}#{args}"
+            command = "powershell -executionpolicy bypass -file #{command}" if
+              File.extname(exec_path).downcase == '.ps1'
 
             if config.path
               @machine.ui.detail(I18n.t("vagrant.provisioners.shell.running",
@@ -112,7 +110,7 @@ module VagrantPlugins
             end
 
             # Execute it with sudo
-            comm.sudo(command) do |type, data|
+            comm.sudo(command, elevated: config.privileged) do |type, data|
               handle_comm(type, data)
             end
           end
Default the WinRM shell provisioner to privileged (elevated)