it-swarm.com.de

Powershell: So ordnen Sie ein Netzlaufwerk mit einem anderen Benutzernamen/Kennwort zu

Hintergrund: Angenommen, ich verwende das folgende Powershell-Skript meines lokalen Computers, um einige Netzlaufwerke automatisch zuzuordnen.

$net = $(New-Object -ComObject WScript.Network);
$net.MapNetworkDrive("p:", "\\papabox\files");

$net = $(New-Object -ComObject WScript.Network);
$net.MapNetworkDrive("q:", "\\quebecbox\files");

## problem -- this one does not work because my username/password
## is different on romeobox
$net = $(New-Object -ComObject WScript.Network);
$net.MapNetworkDrive("r:", "\\romeobox\files");

Frage: Wie ändere ich das Skript so, dass ich auch eine Verbindung zu Romobox herstellen kann, obwohl mein Benutzername/Passwort für Romobox sich von den beiden anderen Boxen unterscheidet?

18
dreftymac
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("r:", "\\romeobox\files", $false, "domain\user", "password")

Sollte den Trick tun,

Freundlichkeit,

Dan

33
Daniel Elliott

Wenn Sie eine Möglichkeit zum Speichern des Kennworts benötigen, ohne es in Klartext in Ihr Skript oder eine Datendatei einzufügen, können Sie das Kennwort mithilfe der DPAPI schützen, sodass Sie es sicher in einer Datei speichern und später als Nur-Text abrufen können, z.

# Stick password into DPAPI storage once - accessible only by current user
Add-Type -Assembly System.Security
$passwordBytes = [System.Text.Encoding]::Unicode.GetBytes("Open Sesame")
$entropy = [byte[]](1,2,3,4,5)
$encrytpedData = [System.Security.Cryptography.ProtectedData]::Protect( `
                       $passwordBytes, $entropy, 'CurrentUser')
$encrytpedData | Set-Content -enc byte .\password.bin

# Retrieve and decrypted password
$encrytpedData = Get-Content -enc byte .\password.bin
$unencrytpedData = [System.Security.Cryptography.ProtectedData]::Unprotect( `
                       $encrytpedData, $entropy, 'CurrentUser')
$password = [System.Text.Encoding]::Unicode.GetString($unencrytpedData)
$password
12
Keith Hill

Kam hier her, um zu suchen, wie man Laufwerke mithilfe von PowerShell zuordnen kann? 

Mit PowerShell3.0 gibt es einen einfacheren Weg. New-PSDrive wurde mit der Option -persist aktualisiert. Z.B. 

New-PSDrive -Name U -PSProvider FileSystem -Root \\yourserver\your\folder -Credential yourdomain\username -Persist

In der Vergangenheit hatte New-PSDrive nur die aktuelle PowerShell-Sitzung betroffen. -persist bewirkt, dass das Mapping sozusagen beim O/S registriert wird. Siehe New-PSDrive

Um die ursprüngliche Frage zu beantworten, können Sie die verwendeten Anmeldeinformationen variieren. Wenn Sie -Credential verwenden, um den Domänennamen\Benutzername zu ändern, fordert Windows zur Eingabe eines Kennworts auf. Eine andere Alternative besteht darin, ein PSCredential-Objekt wie im folgenden Beispiel zu übergeben. Weitere Informationen finden Sie unter Get-Credential .

PS C:\> $User = "mydomain\username"
PS C:\> $PWord = ConvertTo-SecureString -String "mypassword" -AsPlainText -Force
PS C:\> $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
PS C:\> New-PSDrive -Name U -PSProvider FileSystem -Root \\domain\some\folder -Credential $Credential -Persist  
9
Donal Lafferty

Ich fand diesen einfachen Liner funktionierte in meinem Fall (wenig "out of the box" Denken);))

(Start-Process -FilePath "C:\windows\system32\NET.exe" -ArgumentList "USE I:\Server\Volume/USER: XXXXX Kennwort / persistent: yes" -Wait -Passthru) .ExitCode

Und als zusätzlichen Bonus erhalten Sie einen Nice-Exitcode, von dem Sie berichten können. Hoffentlich hilft das.

1
JPand Katie
$User = "user"
$PWord = ConvertTo-SecureString -String "password" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
$net = $(New-Object -ComObject WScript.Network)
$net.MapNetworkDrive("r:", "\\server\share")
1
DisplayName

Auf meiner Workstation

$net.MapNetworkDrive("k", "\\romeobox\files", $false, "domain\username", "password")

schickte mir einen Fehler:

Ausnahmelöcher von «MapNetworkDrive» avec «5» Argument (e): «Nom de périph érique local déjà utilisé.

Kurioserweise kam es nicht aus der Tatsache, dass K: bereits verwendet wurde, sondern "::" fehlt. Folgendes funktioniert auf meiner Workstation:

$net.MapNetworkDrive::("k", "\\romeobox\files", $false, "domain\username", "password")
0
Valentin O.