Alith Anar 40 Geschrieben 3. November 2011 Melden Teilen Geschrieben 3. November 2011 (bearbeitet) Hallo. Ich habe ein Problem mit folgendem Codeausschnitt: function NetzlaufwerkeLoeschen { net use * /delete /yes } foreach ($element in $Hilfe) { [xml] $Quelle = (Get-Content -Path $element) $RV = $Quelle.RootRateDB.Header.GetAttribute("RateVersion") $RV = [int]$RV $RV = $RV.ToString("00") $RR = $Quelle.RootRateDB.Header.GetAttribute("RateRevision") $RR = [int]$RR $RR = $RR.ToString("00") $CS = $Quelle.RootRateDB.Header.GetAttribute("CountryString") [color="Red"]net use b: \\w7u-n-0004\test cd b:[/color] cd laender New-Item $parameter1 -ErrorAction SilentlyContinue -ItemType directory cd $parameter1 New-Item released -ErrorAction SilentlyContinue -ItemType directory cd released New-Item $CS -ErrorAction SilentlyContinue -ItemType directory cd $CS New-Item "$RV.$RR" -ErrorAction SilentlyContinue -ItemType directory cd "$RV.$RR" $Ursprung = "$Pfad\$parameter1-$CS.*" $Ziel = "b:\laender\$parameter1\released\$CS\$RV.$RR\" Copy-Item -Path $Ursprung -Destination $Ziel Netzlaufwerkeloeschen } Im Array Hilfe befinden sich 2 Elemente. Beim ersten Durchlauf funktioniert alles super. Beim 2ten mal legt er wieder die Laufwerksverknüpfung an, beim Wechseln in das Laufwerk erhalte ich dann aber folgende Fehlermeldung: Set-Location : Das Laufwerk wurde nicht gefunden. Ein Laufwerk mit dem Namen "b" ist nicht vorhanden.Bei C:\Users\theinemann\Desktop\ausliefern-test.ps1:45 Zeichen:4 + cd <<<< b: + CategoryInfo : ObjectNotFound: (b:String) [set-Location], DriveNotFoundException + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand Warum klappt es beim 2ten mal nicht, während der erste Durchlauf problemlos funktioniert? Grüße Alith bearbeitet 3. November 2011 von Alith Anar Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 3. November 2011 Melden Teilen Geschrieben 3. November 2011 Wieso nutzt du keine UNC Pfade? Zitieren Link zu diesem Kommentar
Alith Anar 40 Geschrieben 3. November 2011 Autor Melden Teilen Geschrieben 3. November 2011 Weil ich die Verbindung mit einem anderen Benutzer (PW und Benutzernamen) aufrufen muss als dem derzeit angemeldeten und das kann ich per UNC-Pfad nicht übergeben :( Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. November 2011 Melden Teilen Geschrieben 3. November 2011 Hi, Schau mal hier in Beispiel 4 New-PSDrive $drive = new-object -com wscript.network $drive.MapNetworkDrive("X:", "\\Server01\Public") und für mehr Optionen MapNetworkDrive Method wieso hast du die Laufwerksanlage überhaupt in der Schleife? blub Zitieren Link zu diesem Kommentar
Alith Anar 40 Geschrieben 3. November 2011 Autor Melden Teilen Geschrieben 3. November 2011 Ich werds da rausnehmen. Auf MapNetworkdrive bin ich auch schon gestossen erhalte aber den gleichen Fehler. Er legt die Netzwerkverbindung an, findet Sie danach aber nicht, obwohl Sie da ist und bricht dann mit einer DriveNotFoundException ab Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 3. November 2011 Melden Teilen Geschrieben 3. November 2011 Versuch' mal statt cd b: nur B: . So ist es auch in der normalen Kommandozeile... Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. November 2011 Melden Teilen Geschrieben 3. November 2011 Schau vor der Neuanlage des LW mal mit EnumNetworkDrives Method oder auch mit "net use" nach, ob wirklich keine Verbindungen mehr existieren. Probier mal statt \server01\ die IP-Adresse. Dann macht er keine Kerberosverbindung, sondern NTLMv2 blub Zitieren Link zu diesem Kommentar
Alith Anar 40 Geschrieben 3. November 2011 Autor Melden Teilen Geschrieben 3. November 2011 (bearbeitet) Muss man eventuell noch irgendwelche Variablen löschen? Sobald ich Powershell / Powergui einmal schliesse läuft das Script jedesmal sauber durch. Starte ich es jedoch zwei mal hintereinander (ohne Powershell bzw die PowerGUI zu schliessen) kommt der Fehler. Anbei mal der komplette Code: Clear-Host $parameter1 = $args[0] New-Item c:\temp -ItemType directory -ErrorAction SilentlyContinue New-Item c:\temp\logfile-auslieferscript.txt -ItemType file -ErrorAction SilentlyContinue $Logfile = "c:\temp\logfile-auslieferscript.txt" $Netzlaufwerke = "c:\temp\netzlaufwerke.txt" Remove-Item $Netzlaufwerke -ErrorAction SilentlyContinue function NetzlaufwerkeAnlegen { net use $args[0] $args[1] } function NetzlaufwerkeLoeschen { net use * /delete /yes } if (!$parameter1) { $parameter1 = "phoenix" } elseif ($parameter1 -eq "/?" -or ($parameter1 -eq "help") -or ($parameter1 -eq "hilfe")) { echo "Hilfe aufgerufen. Script wird beendet." break } else { Write-Host "Als Parameter wurde $parameter1 übergeben." } net use > $Netzlaufwerke NetzlaufwerkeLoeschen $Pfad = "c:\Projekte\NewRateTables\Ratetables" $Hilfe = Get-ChildItem "$Pfad\*" -Include $parameter1-???.xml net use net use b: \\10.255.5.11\Test "#sicher01" /USER:w7u-n-0004\localhorst foreach ($element in $Hilfe) { [xml] $Quelle = (Get-Content -Path $element) $RV = $Quelle.RootRateDB.Header.GetAttribute("RateVersion") $RV = [int]$RV $RV = $RV.ToString("00") $RR = $Quelle.RootRateDB.Header.GetAttribute("RateRevision") $RR = [int]$RR $RR = $RR.ToString("00") $CS = $Quelle.RootRateDB.Header.GetAttribute("CountryString") b: cd laender New-Item $parameter1 -ErrorAction SilentlyContinue -ItemType directory cd $parameter1 New-Item released -ErrorAction SilentlyContinue -ItemType directory cd released New-Item $CS -ErrorAction SilentlyContinue -ItemType directory cd $CS New-Item "$RV.$RR" -ErrorAction SilentlyContinue -ItemType directory cd "$RV.$RR" $Ursprung = "$Pfad\$parameter1-$CS.*" $Ziel = "b:\laender\$parameter1\released\$CS\$RV.$RR\" Copy-Item -Path $Ursprung -Destination $Ziel cd\ } Netzlaufwerkeloeschen $Datei = Get-Content $Netzlaufwerke $Datei | Foreach-Object { $Zeile=$_; $Zeile = [regex]::Split($Zeile," ") if ($Zeile[0] -eq "OK") { NetzlaufwerkeAnlegen $Zeile[11] $Zeile[19] } else { } } Remove-Item $Netzlaufwerke -ErrorAction SilentlyContinue c: Es geht mit Sicherheit eleganter, aber für den 2ten Script bin ich schon ganz zufrieden. :) bearbeitet 3. November 2011 von Alith Anar Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.