Powershell を使用して別のユーザーとして RSAT ツールを実行する

Powershell を使用して別のユーザーとして RSAT ツールを実行する

私が実現しようとしているのは、別のユーザー (ドメイン管理者) として Powershell スクリプトからいくつかの RSAT ツールを実行することです。

実行コードは次のとおりです:

Start-Process -FilePath "C:\Windows\system32\mmc.exe" -ArgumentList "C:\Windows\system32\gpmc.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser)

そして、次のようなエラーが表示されます: このコマンドは、昇格された権限でのみ開始できます。これは、UAC の制限により、管理者ユーザーを使用してスクリプトを実行する必要があることを示していますが、これはまさに私が達成しようとしていることではありません。

誰か私に助言をくれる人はいませんか?

ありがとう!

編集

より明確にするために、スクリプト全体を添付しました。

$title = "Windows 8.1 RSAT Tools"
$message = "Verwaltungskonsole"

$ad = New-Object System.Management.Automation.Host.ChoiceDescription "&AD Verwaltung", `
"Active Directory-Benutzer und -Computer"

$gpo = New-Object System.Management.Automation.Host.ChoiceDescription "&GPO Verwaltung", `
"Gruppenrichtlinienverwaltung"

$options = [System.Management.Automation.Host.ChoiceDescription[]]($ad, $gpo)

$result = $host.ui.PromptForChoice($title, $message, $options, 0) 

switch ($result)
{
    0 
    {
    Start-Process -Verb RunAs -FilePath "C:\windows\system32\mmc.exe" -ArgumentList "C:\windows\system32\dsa.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser)
    }
    1 
    {
    Start-Process -Verb RunAs -FilePath "C:\windows\system32\mmc.exe" -ArgumentList "C:\windows\system32\gpmc.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser)
    }
}

答え1

これは、2 つの問題に要約される可能性があります。

  • ツールは実際には管理者権限で実行する必要があります。そうしないと、必要な変更を実行できないためです。これは通常、ローカル マシンでツールを実行し、そのマシンに固有の変更を実行する場合に当てはまります。その場合は、コマンドを実行する前にコンソールを管理者権限にする必要があります。これは、PowerShell から直接、次のコマンドを使用して実行できます。

    $newProcess = New-Object System.Diagnostics.ProcessStartInfo "powershell";
    #Indicate that the process should be elevated
    $newProcess.Verb = "runas";
    #Start the new process
    [System.Diagnostics.Process]::Start($newProcess) | Out-Null
    

ソースはこちら。

  • ツールが不適切に構成されており、適切なユーザーとして実行するだけで、必要な変更を行うことができます。これは通常、ツールでリモートサーバーを管理する場合に当てはまります。その場合は、アプリケーション互換性ツールキット (ダウンロード) を実行し、実行可能ファイルに RunAsInvoker 修正を適用します。
    • 互換性管理者を開く
    • 現在のデータベースに新しい修正を作成する
    • 実行ファイルへのパスを設定する
    • 修正のリストからRunAsInvokerを選択し、設定をクリックし、モジュール編集ボックスに*と入力して追加をクリックします。
    • データベースを保存し、右クリックしてインストールします。

残念ながら、これは MMC では機能しません。

答え2

次のように実行するように変更できます:

saps “cmd” -作業ディレクトリ $PSHOME -資格情報 $SU -引数リスト “/c dsa.msc”

関連情報