Domanda

OK ecco il mio problema:

Sto cercando di eseguire uno script remoto su un server.

Sono un amministratore su entrambe le caselle, le eccezioni del firewall sono in atto, amministrazione remota è abilitata, e tutto il resto sembra buono che io possa vedere.

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

Continuo a ricevere il seguente errore in cambio

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

Il server che sta cercando di essere eseguito su un server è 2k8 R2 scatola e sto pensando che il problema è un problema di UAC. Esiste un modo per ottenere questo per funzionare come amministratore, senza dover fare clic su Sì in una scatola di UAC?

Questo pezzo di codice finirà per diventare uno script che dovrà essere completamente automatizzato.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

OK. Dopo alcune ricerche e test ho capito il problema. Dopo aver disattivato il controllo dell'account utente e il firewall e lo script ancora non funziona ho scavato un po 'più profonda e ha scoperto che il problema principale era l'Invoke-Command modo esegue i comandi. utilizza le credenziali della persona che esegue lo script per l'autenticazione al server quindi tenta di utilizzare un altro account per eseguire i permessi o abbassa i privilegi dell'utente in modo che alcuni comandi non possono essere eseguiti.

ho aggiunto le -Credentials passare al comando invocare e tutto funziona grande ora. esempio di codice corretto di seguito:

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

Altri suggerimenti

Questo sembra indicare che è necessario controllare che sia un amministratore locale sul computer remoto (anche se è vero questo è per WMI specifico). Secondo questo è possibile modificare una chiave di registro per fermare UAC applicando accessi remoti per gli amministratori (cercare LocalAccountTokenFilterPolicy). Questo non dovrebbe disattivare UAC solo che non filtrare il token se si utilizza PowerShell / WMI da remoto con un account amministratore.

Impostare l'opzione "EnableLUA" (valore DWORD) in HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System a 0 e riavviare.

In questo modo disabilitare UAC senza un problema, lo farei per tutti gli utenti, con o senza il permesso è a voi, perché la Vista UAC è così orribile che io credo meno le persone che hanno sul meglio (almeno in Vista) che sono. Thsi trucco funziona anche in Win7 troppo.

Buon divertimento con il mio trucco registro:)

P.S .: Come si scopre commenti è così censurare che mostrano come disattivare UAC per quanto riguarda il mio post / thread con la risposta di cui sopra è interessato (una risposta diligente è stato rimosso).

  

Esiste un modo per ottenere questo per funzionare come amministratore, senza dover fare clic su Sì in una scatola di UAC?

Se ciò fosse possibile, sarebbe del tutto sconfiggere il punto di UAC.

Quindi, sembrerebbe la tua unica vera soluzione è quella di disabilitare UAC sulla scatola.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top