Причина, по которой это не будет работать, заключается в том, что сценарий PowerShell сильно отличается от командного файла как с точки зрения его содержимого, так и способа, которым окна (по умолчанию) будут его обрабатывать.
Например, если вы сохраните Write-Host $ENV:COMPUTERNAME
файл PowerShell (.ps1) и дважды щелкните по нему, он, скорее всего, откроется в Блокноте!
Если вы действительно хотите поместить эту однострочную команду PowerShell в командный файл - вам нужно что-то вроде powershell.exe -command "get-appxpackage *3dbuilder* | remove-appxpackage"
сохранения в вашем командном файле. После этого вы сможете щелкнуть правой кнопкой мыши и «запустить от имени администратора» в командном файле, чтобы получить желаемые эффекты.
В противном случае - если у вас есть сценарий PowerShell .ps1 - вы можете вызвать его из командного файла PowerShell.exe -File C:\Folder\script.ps1
и использовать его из командной строки администратора.
В качестве альтернативы вам нужно будет открыть PowerShell (или ISE) от имени администратора и выполнить скрипт ( & C:\Folder\file.ps1
)
Наконец, вы можете использовать этот -verb RunAs
переключатель, чтобы при необходимости вызвать PowerShell.exe и принудительно повысить его, или использовать следующий блок скрипта внутри скрипта, чтобы вызвать повышение сеанса (при необходимости с запросом UAC):
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } ###My Script Code Goes Here and will be executed if I am an administrator!
Примечание: вы можете пойти по ужасному пути переконфигурирования окон, чтобы открыть сценарии PowerShell в PowerShell и / или добавить контекстное меню Windows для запуска в powershell от имени администратора - но это, по меньшей мере, грязно и опасно.