8

Sto tentando di stabilire una sessione di PowerShell per eseguire diversi comandi di Exchange su un server Exchange sull'host locale. Continuo a ricevere il seguente errore:Errore "Accesso negato" durante il tentativo di inoltro remoto al server Exchange su localhost

New-PSSession : [<HOSTNAME>] Connecting to remote server <HOSTNAME> failed with the following error message 
: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. 
At line:1 char:12 
+ $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'h ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin 
    gTransportException 
    + FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed 

Il mio codice è un copia incolla da Microsoft Technet Article. Funziona contro la macchina remota, ma ogni volta che bersaglio la macchina dalla quale sto correndo, ottengo l'errore sopra riportato.

Quello che ho provato finora:

  1. Controllato l'argomento about_remote_troubleshooting aiuto. Nulla di ciò che riguarda gli errori di Accesso negato ha funzionato.
  2. Macchine remote con targeting che utilizzano le stesse credenziali ricevute dall'errore Accesso negato. (Connesso senza emissione)
  3. Verificato che la mia sessione di PowerShell è in esecuzione come amministratore. (È)
  4. Verificato che Exchange Management Shell è in grado di avviarsi correttamente. (È)
  5. Provato senza credenziali per vedere se avrebbe funzionato. (Non funzionava)
  6. Controllato net use e net session per assicurarsi che non avessi una strana connessione multipla con lo stesso problema di credenziali. (Non ho visto nulla per indicarlo)
  7. Provato questo sia dallo script che causa problemi sia digitando i comandi in una console PowerShell a mano. (ottenuto gli stessi risultati in entrambi i modi. Yay per coerenza)
  8. Provato su più sistemi. (Stesso risultato in tutto il mondo)

Alcune note rapide:

  • Questo è Exchange 2013 in esecuzione su Windows Server 2012. Si tratta di un'installazione di base, solo un ambiente di test che ha ben pochi dati e la configurazione minima al di là di installazione e abilitando i servizi remoti.
  • Le credenziali utilizzate erano per l'amministratore del dominio, che dispone anche delle autorizzazioni di Exchange necessarie per fare tutto ciò che è necessario fare. Io, fintanto che ho preso di mira una macchina che non è quella da cui fuggo, non ho alcun problema, con nient'altro che cambia nel modo in cui mi sto connettendo. Inoltre, questo è un dominio di prova in cui l'accesso dell'amministratore del dominio non è stato limitato o ottimizzato in alcun modo, quindi dovrebbe avere accesso totale e completo a tutto.

I comandi specifici sto entrando sono:

$cred = Get-Credential 
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred 

si connette al localhost come questo qualcosa che dovrei essere in grado di fare? O semplicemente non è supportato?

Sono a una perdita completa a questo punto. Qualsiasi aiuto, anche per indicarmi la giusta direzione, sarebbe molto apprezzato.

MODIFICA: dovrei aggiungere, ho provato a collegarmi a questo localhost da un'altra macchina, usando gli stessi comandi come sopra, e ha funzionato senza problemi. Quindi, io non rispondo allo al, si tratta di un problema di configurazione locale.

+0

Hai verificato che il tuo amministratore di dominio può accedere al server? la ragione per cui lo chiedo è che credo che abbiano bisogno di un permesso speciale per lo scambio a distanza, e penso che tu possa farlo solo dallo scambio. – Luke

+0

@Luke Sì. Sono collegato al server con le credenziali di amministratore del mio dominio. Inoltre, da un altro computer, sono in grado di accedere da remoto al computer utilizzando tali credenziali di dominio. Aka, computer A è installato. Ho effettuato l'accesso al computer A (localhost nell'esempio precedente) con credenziali di dominio, non posso scambiare da Powerhell remoto da A. Tuttavia, da Computer B (sullo stesso dominio) sono in grado di eseguire il remote in Exchange sul computer A con quegli stessi cred. Inoltre, se provo a remotare dal computer A al computer C (che ha anche lo scambio installato) con i miei cred di amministratore funziona – Jgraum

+0

ok così non funziona solo da A ad A ... è acceso il firewall? anche se il modo in cui hai spiegato questo potrebbe non essere il problema ... – Luke

risposta

1

Così, sono inciampato sulla soluzione la scorsa settimana. Sembra avere qualcosa a che fare con l'autenticazione utilizzata. Avevo lasciato il parametro "-Authentication" in bianco, con l'intenzione di lasciare che il comando New-PSSession risolvesse quale fosse il metodo migliore.

Apparentemente, questa impostazione predefinita è il metodo di autenticazione "Negozia", ​​che seleziona Kerberos su una macchina remota, ma altrimenti selezionerà NTLM (o almeno, è stato il mio comportamento osservato/assunto). Vedere this Microsoft description dei metodi di autenticazione.

Specificare un metodo di autenticazione specifico (Entrambi "Kerberos" e "Base" funzionavano, "Negoziare" no, non ho lavorato troppo oltre questo) cancella il problema e mi ha permesso di connettermi all'istanza di scambio locale .

Così, invece di questo:

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred 

fare questo:

$session = New-PSSession -Authentication Kerberos -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred 

Perché quel lavoro? Non ho idea. Lo lascerò a persone che ne sanno più di me per spiegarlo.

0

Se si sta tentando di creare una sessione sullo stesso computer della sessione corrente, omettere l'URI.

$cred = Get-Credential 
$session = New-PSSession -ConfigurationName Microsoft.Exchange -Credential $cred 

Ciò creerà una nuova sessione sul localhost a cui è possibile connettersi e utilizzare secondo necessità.

+0

Ho provato questo, mi ha avvicinato. La sessione è stata creata, ma per qualche motivo non aveva i comandi in esso che ho bisogno di eseguire. Non sono del tutto sicuro del perché, come pensavo * il nome della configurazione fosse ciò che rendeva disponibili quei comandi. Penso che potrei aver bisogno di rilevare che sto cercando il mio localhost in qualche modo e caricare lo snap-in (microsoft.blah.blah.blah.Powershell.E2010) e accedere ai comandi in questo modo. – Jgraum

+0

Penso che potresti non pensare troppo a questo, e perdere il punto di quell'articolo che hai collegato. L'intera cosa è accedere ai cmdlet di Exchange * se non sono installati gli strumenti PowerShell di Exchange sul computer locale *, cosa che si fa. Per l'uso locale è necessario avere un collegamento a Exchange Management Console o qualcosa di simile che creerà una sessione di PowerShell con i cmdlet di Exchange già caricati e disponibili. – TheMadTechnician

+0

Forse non ho spiegato correttamente l'uso previsto. Sto scrivendo uno script per eseguire automaticamente una raccolta di comandi su un determinato server di scambio. Verrà eseguito da un'applicazione esterna e non desidero che venga visualizzata una console. Quindi ... Per quanto posso dire ho bisogno di creare una pssession contro la macchina locale.Tuttavia, ho trovato una soluzione alla fine della scorsa settimana, lo posterò qui come risposta a breve. – Jgraum

Problemi correlati