我在 Powershell 腳本中具有以下內容 - InstallApp.ps1 - 下載可執行檔案,然后安裝可執行檔案,最后運行批處理檔案以在應用程式中應用必要的配置:
#Change directory to script location
CD $PSScriptRoot
#Download Application
$AppSource = "www.url.com/application.exe;
$AppDestination = "$PSScriptRoot\application.exe"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -URi $AppSource -OutFile $AppDestination
#Install Application
.\application.exe --platform minimal --script silent-install.js InstallDir=C:\Application
#Configure Application
Start-Process .\ConfigureApp.bat -Verb RunAs
Write-host "Configuring Application. Do not proceed until addittional Command Prompt window closes"
Pause
如果我以管理員身份打開 PowerShell 并運行此腳本,則一切正常。問題是,我需要傳遞它并讓其他人以管理員身份運行它。在這種情況下,我要做的是創建一個名為 _RunMeAsAdmin.bat 的批處理檔案并將其包含在包中。有了它,我將擁有:
@echo off
:: Install App
cd /D "%~dp0"
Powershell.exe -ep bypass -file InstallApp.ps1 -Verb RunAs
當我運行它時,Powershell 腳本會一直安裝應用程式,但從不呼叫額外的 ConfigureApp.bat 來完成配置。
我意識到這可能是實作我想要的一種迂回方式,但好奇是否有人對我如何讓它發揮作用有任何意見?
uj5u.com熱心網友回復:
powershell.exe,Windows PowerShell CLI不直接支持-Verb RunAs以啟動具有提升的行程(以管理員身份)。
相反,您必須使用-Command( -c) 引數來傳遞呼叫 的命令Start-Process -Verb RunAs,而這又需要嵌套 powershell.exe呼叫才能執行.ps1具有高度的檔案:
powershell.exe -noprofile -c Start-Process -Verb RunAs powershell.exe '-ep bypass -file \"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452912.html
