Wieso klappt das PowerShell Skript nicht?
Hallo
Ich habe nachfolgendes Skript. Das will irgendwie nicht. Ich möchte ein Netzlaufwerk mappen, dass auch nach dem Neustarten wieder hier ist.
Es muss irgendwo einen Fehler sein, der ich einfach nicht sehe.
Danke für die Hilfe im Voraus!
<#
Eventuell muss vor der Ausführung die PowerShell Policy umgeändert werden.
PowerShell als Admin starten, untenstehnden Code ausführen und dann das Skript.
Set-ExecutionPolicy unrestricted CurrentUser
#>
#Log
Start-Transcript -Path $HOME\desktop\NLW-MAP-LOG.txt
#Benutzerdaten Abfragen
<#
$user = Read-Host "Benutezrname eingeben"
$pass = Read-Host "Passwort eingeben" |ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PsCredential($user,$pass)
#>
$cred = Get-Credential -Message "Bitte mit dem Benutzername + Passwort anmelden"
#Ordner
<#
ACHTUNG - FOLGENDE ORDNER HABEN GLEICHE LAUFWERKSBUCHSTABEN:
FabianFSL = W
Workaut = W
Workaut Informatik = Z
Koordination Weiterbildung = Z
Entwicklung Weiterbildung = U
AA Kommunikation = U
AA Z APW = Z
UNBEDINGT VORHER PRÜFEN OB DAS FÜR DEN BENUTZER PASST, ANSONSTEN MANUELL ÜBER New-PSDrive EIN EIGENER BUCHSTABE ZUWEISEN!!
#>
$aajbuchhaltung = 'New-PSDrive -Name "J" -Root "\\192.168.34.96\AA J Buchhaltung" -Persist -PSProvider FileSystem -Credential $cred'
$gdc = 'New-PSDrive -Name "T" -Root "\\192.168.34.96\Gian Duri" -Persist -PSProvider "FileSystem" -Credential $cred'
$glerwweitert = 'New-PSDrive -Name "O" -Root "\\192.168.34.96\GL erweitert" -Persist -PSProvider FileSystem -Credential $cred'
$uhome = 'New-PSDrive -Name "P" -Root "\\192.168.34.96\home" -Persist -PSProvider FileSystem -Credential $cred'
$admin = 'New-PSDrive -Name "R" -Root "\\192.168.34.96\workaut Admin" -Persist -PSProvider FileSystem -Credential $cred'
$it = 'New-PSDrive -Name "Z" -Root "\\192.168.34.96\Workaut ICT" -Persist -PSProvider FileSystem -Credential $cred'
$ExclDrives = ('C', 'D')
Get-PSDrive -PSProvider FileSystem | Where-Object {$ExclDrives -notcontains $_.Name} | Remove-PSDrive
<#
Kopieren und Vorname Nachname gemäss Benutzername erstezen.
Invoke-Expression muss bei jedem da stehen, danach $ordnername durch Name siehe oben erstezen.
elseif ($ced.username -eq 'Vorname Nachname')
{
Invoke-Expression $ordnername
}
#>
if ($cred.username -eq 'userA')
{
Invoke-Expression $gdc
Invoke-Expression $uhome
Invoke-Expression $admin
Invoke-Expression $it
}
elseif ($cred.username -eq 'userB')
{
Invoke-Expression $aajbuchhaltung
}
Stop-Transcript
LG calgia
1 Antwort
Das geht leider nicht mit New-PSDrive. Die Option -Persist bedeutet da nur, dass das Laufwerk nicht nur in PowerShell, sondern auch in der Windows-Oberfläche angezeigt werden soll, aber eben beim nächsten Neustart weg ist.
Du kannst also entweder das Script bei jeder Anmeldung laufen lassen (Lässt sich in den Gruppenrichtlinien einstellen. Funktioniert anscheinend erst ab Windows 8)
Oder du benutzt die gute alte DOS-Routine "net use", als Beispiel für die Buchhaltung:
"net use ""\\192.168.34.96\AA J Buchhaltung"" $pass /USER:Domäne\$user /PERSISTENT:YES"
User und Passwort kannst du weglassen, wenn der Benutzeraccount, mit dem das Script ausgeführt wird, Zugriff auf die Freigabe hat.
Details zu "net use" kannst du dir im cmd oder in PowerShell mit "net help use" anschauen.
Da musst du halt die Eingabe von Benutzername und Passwort wieder über den auskommentierten Teil oben machen, weil "net use" nichts mit einem Credential-Objekt anfangen kann.
Oh, stimmt, das J hab ich vergessen. Das kommt einfach direkt nach net use. Mit den Leerzeichen musst du evtl. selbst ein bisschen probieren. Wie du Anführungszeichen in den String kriegst, siehst du ja am Netzwerkpfad. Bei Benutzername und Passwort dürfte es genauso gehen. Also so:
"net use J: ""\\192.168.34.96\AA J Buchhaltung"" ""$pass"" ""/USER:Domäne\$user"" /PERSISTENT:YES"
Und wie gesagt: Evtl. brauchst du Benutzername und Passwort gar nicht, wenn das Script vom jeweiligen Benutzer aus ausgeführt wird.
danke., das habe ich so nicht gewusst. hier fehlt ja für buchhaltung J: kann ich das einfach nach net use noch angeben? wie sieht es bei benutzern mit leerschlag aus? Der User ist ein Lokaler User und kann Leerschläge enthalten