2015-07-30 9 views
5

Ich fand zahlreiche Threads und ging durch sie, aber keiner von ihnen wirklich mein Problem angesprochen. Ich versuche es kurz zu halten.Befehl läuft in ISE, aber nicht als ps1 in Konsole

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

Es funktioniert völlig in Ordnung, wenn ich es von der ISE ausführen. Es funktioniert gut, wenn ich es auf die Konsole kopieren. Es funktioniert nicht, wenn ich versuche, die PS1 in der Konsole auszuführen.

  • neu gestartet ich die ISE
  • I geprüft und beide laufen in Single Threaded Apartment
  • ExecutionPolicy unbeschränkt ist
  • ich beide als Administrator ausführen

Können Sie mir bitte helfen?

+0

Bekommen Sie einen Fehler von 'New-PSDrive'? –

+0

Nein, wenn ich manuell in der Konsole starte: 'C: \ temp> New-PSDrive -Beschreibung" Gruppen-Laufwerk "-Name" G "-PPSProvider FileSystem -Root" \\ domain \ dfs \ domain-location-Share "- Persist' es funktioniert gut – Asharon

+0

Ja, ich habe das, aber wenn Sie das Skript ausführen, erhalten Sie keinen Fehler, es einfach nicht mount the G: Volumen, ist das richtig verstanden? –

Antwort

3

Verwenden -Scope Global, um weitere Informationen zu diesen technet Artikel unter:

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

[...] Windows Powershell schützt den Zugriff auf Variablen, Aliase, Funktionen, und Windows Powershell-Laufwerke (PSDrives) durch Begrenzung, wo sie gelesen und geändert werden können. Indem Sie einige einfache Regeln für den Geltungsbereich implementieren, hilft Ihnen Windows PowerShell, sicherzustellen, dass Sie nicht versehentlich einen Artikel ändern, der nicht geändert werden sollte. [...]

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

Ja! Das ist was fehlte. Jetzt funktioniert es gut - vielen Dank! – Asharon

1

Wie überprüfen Sie, ob das G-Laufwerk zugeordnet ist?

Wenn Sie die unten in Ihrem Skript ausführen, dass Sie über Get-PSDrive zeigen werden, wenn das Laufwerk ist erstellt worden:

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

Wenn Sie nur über den Windows Explorer überprüft, ich glaube, einige lustige Dinge passieren mit Caching dort. Klicken Sie nach dem Ausführen des Skripts auf Computer, und klicken Sie dann im rechten Bereich (in dem die Laufwerke aufgelistet sind) mit der rechten Maustaste, und wählen Sie Refresh; hoffentlich wird das G Laufwerk nun angezeigt.

Wenn Sie eine andere Powershell-Konsole haben und die Überprüfung ausführen, indem Sie push-location g: oder get-psdrive ausführen, wird die Sitzung, die Sie verwenden, um zu überprüfen, ob das Laufwerk erstellt wurde, nicht erstellt . Ich nehme an, dies liegt an Caching in Powershell/ist vielleicht bewusst, um zu vermeiden, dass parallel laufende Skripte sich gegenseitig stören?

+1

Vielen Dank, ich habe nur einen Teil des Skripts gepostet, um die Antwort auf den Punkt zu bringen. Vielen Dank für Ihre Eingabe, ich werde es verwenden, um meine Version zu verbessern. – Asharon

Verwandte Themen