Jump to content

Powershell New-PSDrive Schwierigkeiten


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hallo Community,

 

ich habe etwas Schwierigkeiten mit meinem Script und der Fehlerursache. Eventuell bin ich etwas festgefahren und Ihr könnt mir neue Einblicke zur Problemlösung bieten.

Mein Script stellt die Verbindung zu Firmennetzlaufwerke an einigen PC´s her. Da diese Laufwerke nicht Persistent sind, müssen nach jedem Neustart oder nach dem Herunterfahren die Netzlaufwerke neu verbunden werden. Sporadisch, speziell nachdem ein Computer heruntergefahren wurde und neu eingeschaltet wird, kann er vorkommen, das mein Script keine Verbindung zum Netzlaufwerk herstellen kann. 

 

Anbei ein Codeschnipsel:

#region Laufwerk K testen und verbinden
$path = "K:\"
write-host "testing Drive connection..."$path -ForegroundColor Yellow
$xPath = Test-Path -Path $path
$count = 0
#Schleife die bis zu 15x versucht eine Verbindung zum Neztlaufwerk herzustellen
if (Test-Path -Path $path) {
    Write-Host "$path Connected!" -ForegroundColor Green
}
else {
    while (-not($xPath) -and $count -le 15) {

        if (-not(Test-Path -Path $path)) {
            Write-Host "start connecting to Network Drive"$path -ForegroundColor Blue
            $connectDrive = Start-Job -ScriptBlock {
                $driveName = "K"
                $provider = "FileSystem" 
                $driveRoot = "\\xxxx.xxx.xxx\xx"
                $password = ConvertTo-SecureString "xxxx" -AsPlainText -Force
                $credentials = New-Object System.Management.Automation.PSCredential("xxxxxx", $password)
        
                New-PSDrive  -Name $driveName -PSProvider $provider -Root $driveRoot -Credential $credentials -Scope Global
                $drive = New-Object -ComObject wscript.network
                $drive.MapNetworkDrive("k:", "\\xxxx.xxx.xxx\xx")
            }
            Wait-Job -Job $connectDrive -Timeout 10
        }
        $xPath = Test-Path -Path $path
        $count++
    }
}
#Fehlermeldung wird erzeugt, falls keine Verbindung hergestellt werden kann
if (-not(Test-Path -Path $path)) {
    Write-Host "can not connect to network drive"$path", please check connection!" -ForegroundColor Red
    $msgError = New-Object -ComObject "WScript.Shell"
    $intButton = $msgError.Popup("Can not connect to Network Drive K:\", 0, "ERROR", 4096)
    if ($intButton -eq 1) {} 

} 
#endregion

Falls Ihr Fragen oder mehr Infos benötigt, lasst es mich wissen.

Vielen Dank

Edited by status_Q
Link to post

Zuerst bitte prüfen ob diese GPO-Einstellungen gesetzt sind, und die Clients sie auch bekommen:

https://www.gruppenrichtlinien.de/artikel/fast-logon-schnelles-anmelden-asynchrones-startverhalten-ehemals-faq-36

 

Wenn das immer noch nicht hilft, kannst Du dir das anschauen und testen:

https://www.gruppenrichtlinien.de/artikel/ssd-zu-schnell-synchroner-startvorgang-nicht-moeglich

 

Den Schnellstart kann man unter W10 auch abschalten, der User merkt davon eigentlich nichts.

  • Like 1
Link to post

Hi,

 

ich würde auf "advanced Hibernate" tippen und das die PCs gar nicht runterfahren. Alternativ sind die Rechner zu schnell und "das Netzwerk" ist noch nicht da.

Im Script könntest du das abfangen und bspw. mit "Test-Connection" warten, bis eine Verbindung zum Ziel möglich ist. Generell wäre halt auch ein Logging im Script bei der Fehlersuche hilfreich.

 

Gruß

Jan

 

P.S.: Credentials in einem Script? :shock2:

  • Like 1
Link to post

vielen Dank für die Hinweiße. Nach kurzer Überprüfung, dürfte es der Schnellstart gewesen sein. Vielen Dank dafür!

vor einer Stunde schrieb testperson:

P.S.: Credentials in einem Script? :shock2:

keine Sorge. Ich kompiliere mein Script in eine .exe. Da sieht der User nichts von den credentials 

 

Nochmals recht herzlichen Dank. Ihr habt mir meinen Tag versüßt :D

 

Happy Coding!!

Link to post

über die Korrektheit dieser Möglichkeit lässt sich streiten. Es ist die Philosophie des Unternehmens/Weißung des Vorgesetzen.

Jetzt hab ich allerdings einen ähnlich gelagerten Fall wie oben beschrieben. Allerdings beim Benutzer abmelden/Wechsel. Beim Hochfahren bzw. Neustart wird User A angemeldet. Die Netzlaufwerke werden verbunden. User A wird abgemeldet/Wechsel und lokal Admin angemeldet. Das Script startet aber die Laufwerke können nicht verbunden werden.  Habt Ihr eine Idee?

Vielen Dank

Link to post
vor 58 Minuten schrieb status_Q:

über die Korrektheit dieser Möglichkeit lässt sich streiten. Es ist die Philosophie des Unternehmens/Weißung des Vorgesetzen.

Man könnte ja auch den Userobjekten die Berechtigungen auf die Freigabe erteilen, dann braucht man mit Passwörtern nicht in Scripten zu hampeln.

 

BTW: Es heißt Weisung und Vorgesetzten.

vor 59 Minuten schrieb status_Q:

Die Netzlaufwerke werden verbunden. User A wird abgemeldet/Wechsel und lokal Admin angemeldet. Das Script startet aber die Laufwerke können nicht verbunden werden.

Was möchtest Du erreichen? Sollen die Laufwerke verbunden werden oder nicht? Falls letzteres, sollen sie für bestimmte Benutzer/Gruppen NICHT verbunden werden?

Link to post
vor 19 Minuten schrieb Sunny61:

BTW: Es heißt Weisung und Vorgesetzten.

 

Vielen Dank. Ohne Kaffee ist es wohl noch etwas zu früh für mich.

 

vor 12 Minuten schrieb Sunny61:

Was möchtest Du erreichen? Sollen die Laufwerke verbunden werden oder nicht? Falls letzteres, sollen sie für bestimmte Benutzer/Gruppen NICHT verbunden werden?

das Script soll unabhängig vom lokalen User und deren Berechtigungen bei Start/Neustart/Wechsel/Abmelden und Anmelden von UserB zu UserA zu UserB eine Verbindung zu den Laufwerken herstellen.

Derzeit funktioniert die Verbindung zu den Netzlaufwerken bei Start/Neustart inkl. Autologin an UserB dank eurer Hilfe sehr gut.

 

Die IT-Abteilung der Firma, hat einen User in den Credentials zur Verfügung  gestellt. Die Rechner auf denen das Script ausgeführt wird, sind keine Domänenrechner

 

Falls noch Erklärungsbedarf besteht, gerne melden. 

  

Link to post
vor 2 Stunden schrieb status_Q:

das Script soll unabhängig vom lokalen User und deren Berechtigungen bei Start/Neustart/Wechsel/Abmelden und Anmelden von UserB zu UserA zu UserB eine Verbindung zu den Laufwerken herstellen.

Derzeit funktioniert die Verbindung zu den Netzlaufwerken bei Start/Neustart inkl. Autologin an UserB dank eurer Hilfe sehr gut.

 

Die IT-Abteilung der Firma, hat einen User in den Credentials zur Verfügung  gestellt. Die Rechner auf denen das Script ausgeführt wird, sind keine Domänenrechner

Dann eine geplante Aufgabe erstellen, man kann bei Anmeldung eines Users ein Programm starten. Funktioniert es bei einem Rechner, kann man die Aufgabe exportieren und auf den anderen Rechnern wieder importieren.

Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...