11

OKここに私の問題があります:

サーバー上でリモートでスクリプトを実行しようとしています。

私は両方のボックスの管理者であり、ファイアウォールの例外が設定されており、リモート管理者が有効になっており、他のすべてが見栄えがします。

invoke-command -ComputerName $ComputerName -ScriptBlock `
{
    cd C:\Windows\System32\inetsrv\; 
    ./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files>
}

代わりに次のエラーが発生し続けます

ERROR ( hresult:80070005, message:Failed to commit configuration changes. Access is denied.

実行しようとしているサーバーはサーバー2k8R2ボックスであり、問​​題はUACの問題だと思います。UACボックスで[はい]をクリックしなくても、これを管理者として実行する方法はありますか?

このコードは、最終的には完全に自動化する必要のあるスクリプトになります。

どんな助けでも大歓迎です。

4

4 に答える 4

10

わかった。いくつかの調査とテストの後、私は問題を理解しました。UAC とファイアウォールを無効にしてもスクリプトがまだ機能しない後、もう少し深く掘り下げたところ、主な問題は invoke-command がコマンドを実行する方法にあることがわかりました。スクリプトを実行している人の資格情報を使用してサーバーへの認証を行い、別のアカウントを使用して権限を実行しようとしたり、特定のコマンドを実行できないようにユーザーの権限を下げたりします。

-Credentials スイッチを invoke コマンドに追加したところ、すべてがうまく機能しています。以下のコードサンプルを修正しました。

$user = New-Object Management.Automation.PSCredential("$UserName", $securePassword)
invoke-command -ComputerName $ComputerName -Credential $user -ScriptBlock ` 
{ 
    cd C:\Windows\System32\inetsrv\;  
    ./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files> 
} 
于 2010-02-13T15:53:15.730 に答える
0

これは、自分がリモート マシンのローカル管理者であることを確認する必要があることを示しているようです (ただし、これは WMI 固有のものです)。これに従って、レジストリ キーを変更して、UAC が管理者のリモート ログオンに適用されないようにすることができます (LocalAccountTokenFilterPolicy を検索します)。管理者アカウントでpowershell/WMIをリモートで使用している場合、トークンをフィルタリングしないだけでUACを無効にするべきではありません。

于 2010-02-11T22:24:15.767 に答える
-3

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System にあるオプション "EnableLUA" (DWORD 値) を設定し0て再起動します。

これにより、問題なくUACが無効になります。許可の有無にかかわらず、すべてのユーザーに対して無効にします。

このトリックは、Windows Vista および Windows 7 でも機能します。

于 2010-07-29T15:09:54.810 に答える
-4

UACボックスで「はい」をクリックしなくても、これを管理者として実行する方法はありますか?

これが可能であれば、UAC のポイントを完全に無効にします。

したがって、唯一の本当の解決策は、ボックスで UAC を無効にすることです。

于 2010-02-11T22:06:52.810 に答える