使用Invoke-Command时的权限提升

时间:2019-03-12 12:05:06

标签: powershell elevated-privileges

我正在尝试使用Invoke-Command将MSI部署到远程计算机,请参阅下文。

如果我以“ Domain \ Administrator”的身份运行此脚本,则可以使用,如果我尝试以指定的帐户运行,则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
    }

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我想使用invoke-command在远程计算机中安装node.msi。

对于海拔,我们可以在Start-Process命令中使用-Verb RunAs。更新的代码如下所示。

$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 {
        start-process powershell.exe -verb runas -argumentlist ('Msiexec /i "E:\temp\Deploy.msi" /quiet /qn /norestart /log E:\temp\MSIInstall.txt')}

现在,如果对于具有本地管理员权限的帐户出现以下错误,则为

由于以下错误而无法运行此命令:此操作需要交互式窗口站。

我在注册表中做了以下更改,因为不存在使它起作用的密钥-

enter image description here