Powershell Username und Passwort für Netzlaufwerk in den Anmeldeoptionen speichern

sniper8952

Lt. Junior Grade
Registriert
Juni 2008
Beiträge
355
Hallo zusammen

Ich habe folgendes Problem. Ich habe dieses Script geschrieben, um Netzlaufwerke einzubinden. Zuerst werden vom User der Username und das Passwort eingegeben. Danach sollte es in den Anmeldeoptionen gespeichert werden. In meinem Fall nehme ich jedoch an, dass das verschlüsselte Passwort in den Anmeldeoptionen abgelegt wird und nicht das Passwort selber.
Was mache ich da falsch?

$UserName = Read-Host "Bitte geben Sie Ihren Username ein!"
$Secure = Read-Host "Bitte geben Sie Ihr Kennwort ein!" -AsSecureString


cmdkey /add: "files.xxx.ch" /user: $UserName /pass: $Secure

New-PSDrive -Name F -Persist -PSProvider FileSystem -Root "\\xxx.ch\Finanzen"
New-PSDrive -Name H -Persist -PSProvider FileSystem -Root "\\files.xxx.ch\xxxTransfer"
New-PSDrive -Name Y -Persist -PSProvider FileSystem -Root "\\files.xxx.ch\xxx Allgemein"
New-PSDrive -Name Z -Persist -PSProvider FileSystem -Root "\\files.xxx.ch\xxxtransfer"

Besten Dank im Voraus für eure Hilfe!

LG Sniper8952
 
Klingt für mich nach einem Problem, welches man anders lösen würde.

Binde Laufwerke per GPO ein und fix deine Berechtigungen auf AD Ebene, dann brauchste auch keine Passwörter :)
 
  • Gefällt mir
Reaktionen: kartoffelpü
So würde ich das, in einer Domänen-Umgebung, auch automatisiert machen.
Der TO schreibt aber leider nicht, ob dies der Fall ist.

Ich lese sogar heraus, dass er ein Script schreiben möchte, womit er selbst oder ein User, Laufwerke anhand von einer manuellen Credentials-Eingabe, einbinden kann.
 
Die Netzlaufwerke werden doch schon als persistent gemountet. Wozu das Passwort zusätzlich in den Anmeldedaten speichern?

Ist es zu viel Aufwand, das beim wieder verbinden zu den Laufwerken erneut einzugeben?
 
Für sowas ist ChatGPT doch perfekt :D.

# Replace the values in angle brackets with your own values
$networkDriveLetter = "<DRIVE LETTER>" # e.g. Z
$networkDrivePath = "<NETWORK DRIVE PATH>" # e.g. \\server\share
$username = "<USERNAME>" # e.g. DOMAIN\username
$password = "<PASSWORD>"

# Encrypt the password
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $securePassword)

# Save the credentials to a file in encrypted form
$credential | Export-Clixml -Path "C:\path\to\encrypted\credential.xml"

# Map the network drive using the saved credentials
New-PSDrive -Name $networkDriveLetter -PSProvider FileSystem -Root $networkDrivePath -Credential $credential -Persist

When you run this script, the password is encrypted and saved to the specified file location. When you need to remount the network drive in the future, you can use the Import-Clixml cmdlet to import the encrypted credentials and create a new PSCredential object. Here's an example:
# Import the encrypted credentials from the file
$credential = Import-Clixml -Path "C:\path\to\encrypted\credential.xml"

# Map the network drive using the imported credentials
New-PSDrive -Name $networkDriveLetter -PSProvider FileSystem -Root $networkDrivePath -Credential $credential -Persist

 
  • Gefällt mir
Reaktionen: HisN und TheChange
Jawohl, ChatGPT hat's gelöst.

So mache ich das nämlich auch. Username und Kennwort in einer verschlüsselten Datei speichern und dann im Script die Schlüsseldatei einbinden und das PSDrive mounten.
 
Danke für eure Inputs zum Thema GPO's. Das würde hier nicht funktionieren, weil die Geräte AzureAD gejoint sind.
Das ChatGPT Script ist nicht das, was ich brauche, weil der User nicht selber sein Login eingeben muss, sondern das Login im Script bereits hinterlegt ist.
 
sniper8952 schrieb:
Das ChatGPT Script ist nicht das, was ich brauche, weil der User nicht selber sein Login eingeben muss, sondern das Login im Script bereits hinterlegt ist.
Das verstehe ich nicht. Du fragst doch in deinem Script den Benutzernamen und das Kennwort ab.
Ansonsten mit Get-Credential arbeiten. New-PSDrive unterstützt auch den Parameter -Credential zur Übergabe der Anmeldeinformationen.
 
@Evil E-Lex: Also das Problem ist, dass der Rechner die Anmeldedaten vergisst und das Netzlaufwerk sich nicht mehr einbinden lässt. Ich denke es hängt damit zusammen, dass die Credentials nicht in den Anmeldeinformationen abgespeichert werden. Aus diesem Grund habe ich ein Script geschrieben, indem der User seine Login Daten eingeben muss und diese dann in den Anmeldedaten abgespeichert werden. Danach werden die Netzlaufwerke nochmals eingebunden.
 
Das widerspricht aber deiner Aussage, dass der User den "Login nicht selber eingeben muss". Die Anmeldeinformationen kannst du in PowerShell trivial per Get-Credential abfragen und diese dann einfach an New-PSDrive übergeben. Dein "cmdkey /add" ist da überflüssig. Macht die Sache nur komplizierter. Wenn schon PowerShell, dann sollte man das auch konsequent durchziehen.
 
@Evil E-Lex
Evil E-Lex schrieb:
Das verstehe ich nicht. Du fragst doch in deinem Script den Benutzernamen und das Kennwort ab.
Ansonsten mit Get-Credential arbeiten. New-PSDrive unterstützt auch den Parameter -Credential zur Übergabe der Anmeldeinformationen.
Ich meine damit, dass das Chat GPT Script nicht den Benutzer und das Benutzerpasswort abfragt.
Denn cmdkey /add habe ich hinzugefügt, damit der Benutzer und das Passwort in den Anmeldeinformationen gespeichert werden. Wenn diese nicht gespeichert werden habe ich die Erfahrung gemacht, dass der Computer nach einem Neustart die Login Informationen für die Netzlaufwerke verliert.
 
Zurück
Oben