Archiv der Kategorie: DevOps Tutorials

Tutorials for DevOps & Scripting Deploying and Technical contribution for Professionals

Verknüpfung erstellen mit VBScript

Mit Visual Basic Script Verknüpfungen auf Desktop erstellen

VBScript können überall dort eingesetzt werden, wo automatisierte Aufgaben erforderlich sind. Die Anwendung von Batchdateien ist nicht immer das geeignete Mittel, und der Einsatz von Gruppenrichtlinien steht nicht überall zur Verfügung, hier kann ein Visual Basic Script diese Aufgabe übernehmen, beispielsweise um Verknüpfungen zu Anwendungen für Benutzer bereitzustellen.

create-shortcut.vbs

Das folgende VBScript erstellt eine Verküpfung (shortcut) auf dem Desktop, hier zum Beispiel für den Windows Rechner.

Die VBScript Zeilen durch  Copy Paste in Notepad einfügen und als Datei create-shortcut.vbs speichern, und mit einem Doppelklick die Verknüpfung erstellen.
' VBScript to created shortcut
Const strProgramTitle = "Shortcut to Calculator"
Const strProgram = "%SystemRoot%\System32\calc.exe"
Const strWorkDir = "%USERPROFILE%"
Dim objShortcut, objShell
Set objShell = WScript.CreateObject ("Wscript.Shell")
strLPath = objShell.SpecialFolders ("Desktop")
Set objShortcut = objShell.CreateShortcut (strLPath & "\" & strProgramTitle & ".lnk")
objShortcut.TargetPath = strProgram
objShortcut.WorkingDirectory = strWorkDir
objShortcut.Description = strProgramTitle
objShortcut.Save
WScript.Quit

  Zu guter letzt, die Const Zeilen im Script können editiert werden, für beliebige weitere Anwendungen.

Die auf dem Desktop erstellte Verknüpfung nun ausführen um den Windows Rechner zu öffnen.

C:\> cscript //Nologo //B create-shortcut.vbs

Aus der Eingabeaufforderung oder aus einer Batch kann dieses VBScript mit cscript gestartet werden.

Netzlaufwerk mapping aus PowerShell Script

Windows Netzlaufwerk verbinden mit PowerShell

PowerShell Scripts können genutzt werden um Netzlaufwerke zu Windows-Netzwerkfreigaben auf Server oder NAS Geräte zu erstellen. Dort wo die Batchverarbeitung nicht die geeignete Wahl ist, oder aber Gruppenrichtlinien nicht möglich sind, kann ein PowerShell Script diese Aufgabe erfüllen, beispielsweise bei der Ausführung von Login Scripts bei Remote Clients über VPN, oder Clients diese nicht Mitglied der AD Domäne sind.

PowerShell für Netzlaufwerk Mapping

Das PowerShell Script-Beispiel netdrive.ps1 erstellt die Windows-Netzwerkfreigabe zum Netzlaufwerk Z: für den Benutzer, dabei kann die Anmeldung als ein anderer Benutzer erfolgen, als mit dem man am Client authentifiziert ist.

$LogFile = "netdrive.log"
Get-Date -Format "dd/MM/yyyy HH:mm" | Out-File $LogFile -Force
Write-Host "`nGeben Sie Ihre Anmeldeinformationen ein, um Netzlaufwerke zuzuordnen oder um abzubrechen." -ForegroundColor Yellow
$Cred = Get-Credential -Message "Bitte geben Sie Ihre Anmeldeinformationen ein" -UserName "domain\username"
if ($Cred) {
    $sharePath = "\\server\share"
    $mapDrive = "Z"
    Write-Host "`nMapping network share.." -ForegroundColor White
    Add-Content $LogFile -Value "Mapping drive $mapDrive $sharePath"
    New-PSDrive -Name $mapDrive -Root $sharePath -Persist -Scope Global -PSProvider "FileSystem" -Credential $Cred | Out-File $LogFile -Append
} else {
    Add-Content $LogFile -Value "Es wurden keine Anmeldeinformationen angegeben, Netzlaufwerke werden nicht zugeordnet."
}

Die entsprechende Windows-Netzwerkfreigabe wird in Zeile 6 bei $sharePath definiert, das Laufwerk wird in Zeile 7 bei $mapDrive zugewiesen, in dem der jeweilige Platzhalter zwischen den Anführungs- und Schlusszeichen angepasst wird. Sollen weitere Netzlaufwerke erstellt werden, kann in der if Anweisung die Zeilen 6 – 10 für das nächste Netzlaufwerk kopiert werden, dabei die Variablen zu $sharePath1 und $mapDrive1 benennen.

Nach einfügen der Code Zeilen in eine Datei netdrive.ps1, zum Verzeichnis wechseln in diesem das Script sich befindet und es ausführen.

.\netdrive.ps1

Die Platzhalter domain\username durch die entsprechende Domäne und Benutzer ersetzen, ohne Domäne einfach leer lassen.

Windows PowerShell Anmeldeinformationen
Windows-PowerShell Anmeldeinformationen

PowerShell Script aus Batch ausführen

Wird bereits eine Batchdatei zB. netlogon.bat eingesetzt, kann netdrive.ps1 aus der Batchdatei wie folgt ausgeführt werden:

start /wait "" powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File netdrive.ps1

Nach erfolgreicher Anmeldung wird das Netzlaufwerk zur Windows-Netzwerkfreigabe erstellt. Zur Kontrolle wird die Laufwerkszuordnung in der Logdatei netdrive.log protokolliert.

Netzlaufwerk mapping aus VBScript

Windows Netzlaufwerk verbinden mit Visual Basic Script

VBScript können genutzt werden um Netzlaufwerke zu Windows-Netzwerkfreigabe auf Server oder NAS Geräte zu verbinden. In Situationen wo die Batchverarbeitung nicht die geeignete Wahl ist, oder aber Gruppenrichtlinien nicht die gewünschte Anwendung ist, kann ein Visual Basic Script die Anforderung erfüllen, beispielsweise zur Anwendung von Login Scripts bei VPN Remote Clients diese nicht Mitglied der AD Domäne sind.

Microsoft VBScript beinhaltet Objekt Klassen, Methoden (Funktionen / Prozeduren) und Wertestrukturen. Hier kommt unser Objekt MapNetworkDrive als Methode zur Anwendung. Die Methode oder das Verb manipuliert wiederum Werte.

Es können beliebige Objekt verwendet werden, hier wird das Objekt objNetwork definiert, Entwickler von Scripts halten sich gerne an Muster und ihren Variablen. Ein Präfix von str gibt einen Zeichenfolgenwert an, während der Präfix obj ein Objekt angibt. Nachdem WScript unser objNetwork erstellt hat, kann es mit der Methode MapNetworkDrive bearbeitet werden.

VBScript für Netzlaufwerk Mapping

Folgendes VBScript netdrive.vbs als Beispiel, für die herstellung der Windows-Netzwerkfreigabe zum Netzlaufwerk Z:, dabei kann die Verbindung als ein anderer Benutzer erfolgen, als mit dem man sich am Client authentifiziert hat.

Option Explicit
Dim objNetwork, strDriveLetter, strRemotePath, strUser, strPassword, strProfile, WshShell

' Set credentials & network share to variables.
strDriveLetter = "Z:"
strRemotePath = "\\server\share"
strUser = "domain\username"
strPassword = "topsecret"
strProfile = "false"

' Create a network object (objNetwork) do apply MapNetworkDrive Z:
Set objNetwork = WScript.CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, _
strProfile, strUser, strPassword

' Open message box, enable remove the apostrophe at the beginning.
' WScript.Echo "Map Network Drive " & strDriveLetter
MsgBox " Explorer launch Network Drive " & strDriveLetter, vbInformation, "Network Drive Mapping"
' Explorer will open the mapped network drive.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "explorer.exe /e," & strDriveLetter, 1, false
WScript.Quit

Die entsprechende Variable wird in den Zeilen 5 – 9 zugewiesen, in dem der jeweilige Platzhalter zwischen den Anführungs- und Schlusszeichen definiert wird.

VBScript Variablen definieren

  1. Bei strDriveLetter gewünschtes Netzlaufwerk zuweisen.
  2. Bei strRemotePath der UNC Pfad zur Netzwerkfreigabe.
  3. Bei strUser der Benutzername, ist dieser Mitglied einer Windows Domäne, muss der Domänen Präfix angeführt werden, dies in der Form domain\user.
  4. Bei strPassword das dem Benutzer zugewiesene Passwort.

VBScript WSH aus Batch ausführen

Kommt für für die Netzwerk-Anmeldung bereits ein Batch zB. netlogon.bat zur Anwendung, wird aus dem Batch unser VBScript netdrive.vbs wie folgt ausgeführt:

start /wait "" cscript //Nologo netdrive.vbs
VBScript Network Drive Mapping

Soll bei der Ausführung keine Visual Basic Console Fenster ausgegeben werden, verwendet man die Option /B, damit startet die Anwendung ohne ein neues Fenster zu öffnen.

start /B /wait "" cscript //Nologo netdrive.vbs
cscript msgbox map network drive

Nach erfolgreicher Anmeldung wird das Netzlaufwerk zur Windows-Netzwerkfreigabe erstellt, und anschliessend im Explorer geöffnet.