gpt4 book ai didi

powershell - 通过 powershell 以管理员身份启动 msiexec

转载 作者:行者123 更新时间:2023-12-02 23:53:46 24 4
gpt4 key购买 nike

我在尝试执行有关执行 MSI 应用程序的一段代码时遇到问题。
我需要传递存储在变量中的凭据,然后通过“runas”将这些凭据传递给 MSI 包,以便使用我传递给应用程序的升级凭据进行安装。

这是我遇到问题的代码部分。

if($filter -like "*.msi")
{
Start-Process -FilePath "msiexec $FullFilePath" -Credential $adminCreds -ArgumentList "-noprofile -command &{Start-Process /i $FullFilePath /passive /norestart -verb runas}" -Wait -WorkingDirectory $path
exit
}

我的变量如下:
$filter = Get-ChildItem $path -Filter $($installer[$i]) -name
$FullFilePath = $path + "\" + $filter
$path = Split-Path $script:MyInvocation.MyCommand.Path

提前致谢!

最佳答案

为了解决我的问题,我创建了一个代码块,用于导出临时批处理脚本,以在执行脚本的文件夹中查找任何 msi 应用程序。运行脚本并安装应用程序后,脚本会自行删除。我通过批处理脚本而不是直接通过 MSI 应用程序传递凭据,但这可以满足我的需要。这是我的脚本的更改。

$msiBatch = @"
@echo off
pushd "%~dp0"

::Get the MSI file name to install
for /f "tokens=1* delims=\" %%A in ( 'forfiles /s /m *.msi /c "cmd /c echo @relpath"' ) do for %%F in (^"%%B) do (set myapp=%%~F)

::Launch our installer
start /w "" msiexec /i "%~dp0%myapp%" /passive /norestart

::Self Delete
DEL "%~f0"
"@

以下是它的运行方式:
if($filter -like "*.msi")
{
$installPath = $path + "\msiInstaller.bat"
$msiBatch | Out-File -Encoding Ascii -append $installPath
$FullFilePath = $installPath

}

Start-Process -FilePath powershell.exe -Credential $adminCreds -NoNewWindow -ArgumentList "-noprofile -command &{Start-Process $FullFilePath -verb runas}" -Wait -WorkingDirectory $path
break

关于powershell - 通过 powershell 以管理员身份启动 msiexec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com