2015-07-30 15 views
5

Ho trovato numerosi thread e li ho esaminati, ma nessuno di loro ha veramente affrontato il mio problema. Cerco di farla breve.Il comando viene eseguito in ISE ma non come ps1 nella console

New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\dom\dfs\dom-loc-Share" –Persist 

Funziona perfettamente se lo eseguo dall'ISE. Funziona bene quando copio incollarlo sulla console. Non funziona se provo a eseguire ps1 nella console.

  • ho riavviato l'ISE
  • ho controllato ed entrambi girano in Single Threaded Apartment
  • executionpolicy è illimitato
  • corro sia come amministratore

Potete per favore aiutarmi?

+0

si ottiene un errore dal 'New-PSDrive'? –

+0

No, se corro manualmente nella console: 'C: \ temp> New-PSDrive -Description" Gruppen-Laufwerk "-Name" G "-PSProvider FileSystem -Root" \\ dominio \ dfs \ dominio-posizione-Condividi "- Persistenza' funziona bene – Asharon

+0

Sì, ho capito, ma quando si esegue lo script, non si ottiene un errore, semplicemente non si monta G: volume, è correttamente compreso? –

risposta

3

Usa -Scope Global, per maggiori informazioni visita questo articolo TechNet:

about_Scopes https://technet.microsoft.com/en-us/library/hh847849.aspx

[...] Windows PowerShell protegge l'accesso alle variabili, alias, funzioni, e unità di Windows PowerShell (PSDrives) limitando dove possono essere letti e modificati. Applicando alcune semplici regole per l'ambito, Windows PowerShell aiuta a garantire che non si modifichi inavvertitamente un elemento che non dovrebbe essere modificato. [...]

New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\dom\dfs\dom-loc-Share" –Persist -Scope Global 
+1

Sì! Questo è quello che mancava. Ora funziona bene - grazie mille! – Asharon

1

Come si controlla se l'unità G è mappata?

Se si esegue il seguito nello script, che lo mostrerò tramite Get-PSDrive se è stato creato l'unità:

if(Get-PSDrive | ?{$_.Name -eq "G"}) { 
    'Removing G' 
    Remove-PSDrive "G" 
} 


'Adding G' 
New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\ukcconas2edc\ax_docs" –Persist 


'Does G Exist?' 
Get-PSDrive | ?{$_.Name -eq "G"} 

Se stai solo controllando tramite Esplora risorse, penso che accadono alcune cose divertenti con caching lì. Dopo aver eseguito lo script, fare clic su Computer, quindi sul pannello di destra (dove sono elencate le unità) fare clic con il tasto destro e selezionare Refresh; speriamo che l'unità G mostrerà ora.

Inoltre, se si dispone di una console PowerShell diversa e si sta verificando eseguendo push-location g: o get-psdrive, se la sessione che si sta utilizzando per verificare la presenza dell'unità è stata creata prima della creazione dell'unità, questa non verrà elencata . Presumo che ciò sia dovuto al caching in PowerShell/forse è intenzionale evitare che gli script vengano eseguiti in parallelo interferendo l'uno con l'altro?

+1

Grazie mille, ho pubblicato solo parte dello script per mantenere la risposta al punto. Grazie per il tuo contributo, lo userò per migliorare la mia versione. – Asharon

Problemi correlati