Question

OK voici mon problème:

Je suis en train d'exécuter un script à distance sur un serveur.

Je suis un administrateur sur les deux cases, des exceptions de pare-feu sont en place, administration à distance est activé, et tout le reste semble bon que je peux voir.

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

Je continue à obtenir l'erreur suivante en retour

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

Le serveur, il tente d'exécuter sur un serveur 2k8 R2 boîte et je pense la question est un problème UAC. Y at-il de toute façon d'obtenir ce à exécuter en tant qu'administrateur sans avoir à cliquer oui sur une boîte UAC?

Ce morceau de code finira par devenir un script qui devra être entièrement automatisé.

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

OK. Après quelques recherches et d'essais que j'ai compris la question. Après avoir désactivé l'UAC et le pare-feu et le script pas encore que je travaille un peu plus creusé et découvert que la question principale était la commande Invoke-chemin exécute les commandes. il utilise les informations d'identification de la personne qui exécute le script pour authentifier sur le serveur essaie alors d'utiliser un autre compte pour exécuter les autorisations ou les privilèges de diminue l'utilisateur afin que certaines commandes ne peuvent pas être exécutées.

J'ai ajouté les -Credentials passer à la commande Invoke et tout fonctionne super maintenant. dessous corrigé exemple de code:

$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> 
} 

Autres conseils

Cette semble indiquer que vous devez vous assurer que vous êtes un administrateur local sur la machine distante (même si il est vrai que c'est pour WMI spécifiquement). Selon cette vous pouvez modifier une clé de Registre pour arrêter l'application de contrôle de compte logons à distance pour les administrateurs (recherche de LocalAccountTokenFilterPolicy). Cela ne devrait pas désactiver l'UAC tout simplement pas filtrer le jeton si vous utilisez Powershell / WMI à distance avec un compte administrateur.

Définissez l'option "EnableLUA" (valeur DWORD) trouvés dans HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System à 0 et redémarrez.

Désactivera UAC sans problème, je le fais pour tous vos utilisateurs, que ce soit avec ou sans la permission est à vous, parce que la vista UAC est tellement horrible que je ne crois moins les gens qui l'ont le mieux (au moins dans Vista) ils se trouvent. Thsi astuce fonctionne aussi dans Win7 aussi.

Amusez-vous avec mon truc de registre:)

P.S .: Il se trouve SO est censurant des commentaires qui montrent comment désactiver l'UAC dans la mesure où mon post / thread avec la réponse ci-dessus concerne (a été retiré une réponse diligente).

  

Y at-il de toute façon d'obtenir ce à exécuter en tant qu'administrateur sans avoir à cliquer oui sur une boîte UAC?

Si cela était possible, il serait tout à fait la défaite du point de contrôle de compte.

Ainsi, il semble votre seule vraie solution est de désactiver l'UAC sur la boîte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top