【发布时间】:2019-08-02 21:37:50
【问题描述】:
我正在尝试使用 Invoke-Command 将 MSI 部署到远程计算机,请参见下文。
如果我将此脚本作为“域\管理员”运行,它会起作用,如果我尝试将其作为指定帐户运行,则 MSI 无法安装。我已验证我正在运行的帐户在所有服务器上都具有本地管理员权限。
如果它是本地管理员的成员,有没有办法让 PowerShell 提升帐户的权限?
我想避免在脚本本身中保存凭据。
$cred = Get-Credential
$MSISource = "E:\DeploymentTool\Deploy.msi"
$csv = Import-Csv "C:\Scripts\Deploylist.csv"
$csv | ForEach-Object {
$Server = $_.Server
Copy-Item $MSISource -Destination "\\$Server\E$\temp\Deploy.msi" -Force
Invoke-Command -ComputerName $Server -Credential $Cred -ScriptBlock {
Msiexec /i "E:\temp\Deploy.msi" /quiet /qn /norestart /log E:\temp\MSIInstall.txt
}
【问题讨论】:
-
嗨,检查一下metisit.com/blog/securely-storing-credentials-with-powershell 我知道还有一些选项如何使用加密密码生成文本文件,然后使用一些特定的命令重用,但目前找不到它,至少我找到了@ 987654322@
-
您可以创建一个自定义PSSessionConfiguration,以管理员身份运行,无论谁连接。听起来像是一个潜在的安全漏洞,但通过一些工作,您可以严格限制会话中允许的命令,因此只有您希望用户运行的命令可用。
-
感谢您的建议,非常感谢。它是远程端的“调用命令”需要提升的权限,不确定我是否读错了,但如果您想在主机端提升权限,PSSessionConfig 不是解决方案吗?
-
@Milkman_2009。如果您在目标上创建constrained endpoint,则可以通过使用
-ConfigurationName上的-ConfigurationName参数传递配置名称,使用您指定的设置(包括海拔高度)进行连接。 -
@boxdog,这似乎是我问题的答案。感谢您的帮助
标签: powershell elevated-privileges