我需要使用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窗口,不写入任何文本,并立即关闭。
提前感谢任何见解。
答案 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脚本的顶部,我包含了自升式机制。