以管理员身份运行powershell脚本,并使用其他用户帐户

时间:2018-04-05 15:20:48

标签: powershell administrator gpo

我需要使用powershell以管理员身份启动powershell脚本,并以与当前登录用户不同的用户身份启动。这是为了在多台服务器计算机上运行GPO的一些更新。目的是让脚本在启动时提示输入凭据。

这是我到目前为止所尝试的内容:

 Start-Process 'powershell.exe' -Credential 'adminAccount' -ArgumentList '"file path\updateGPO.ps1" -Verb runAs'

这会提示输入密码,并且将使用指定的帐户运行脚本,但不以管理员身份运行,从而为管理员操作提供“访问被拒绝”错误。新的PowerShell窗口缺少标题中的管理员文本。

我也尝试了以下内容:

 $script = 'file path\updateGPO.ps1'
 Start-Process 'powershell.exe' -Credential 'adminAccount' -ArgumentList '-command &{start-process $script} -Verb runAs'

这将启动powershell窗口,不写入任何文本,并立即关闭。

提前感谢任何见解。

1 个答案:

答案 0 :(得分:1)

TheIncorrigible1的评论让我走上正轨。

# a. Set Server name in ConnectionString -- 
# b. Set ($hostname) host name value that is using in SFTP send location
# c. Set ($sndLocation) send location name

$Catalog.ConnectionString ="xxx"
$hostname = "bbb"
$sndLocation = "SndPrt_XXXXXXX001" #send location

# Function to retrieve the status of the specify send port
function getStatus() {
    foreach ($sendPort in $catalog.SendPorts) {
        foreach($sendLoc in $sendPort.SendPorts 
                | Where {$_.Name -eq $sndLocation}) {
            return $sendLoc.enabled
        }
    }
}

# Function to enable the send port
function enablesendLocation() {
    $location = get-wmiobject MSBTS_SendPort -Namespace 
            'root\MicrosoftBizTalkServer' -Filter "name='${sndLocation}'"
    [void]$location.Start()
    [void]$Catalog.Refresh()
}

# Function to disable the send port
function disablesendLocation() {
    $location = get-wmiobject MSBTS_sendport -Namespace 
            'root\MicrosoftBizTalkServer' -Filter "name='${sndLocation}'"
    [void]$location.Stop()
    [void]$Catalog.Refresh()
}

{
    # Enable send location
    enablesendLocation
}

在updateGPO.ps1脚本的顶部,我包含了自升式机制。