seger85
Goto Top

Mehrere Shortcuts, einen Sammel-Ordner und neue .ico auf dem Desktop anlegen

Moin zusammen,

ich habe hier im Forum schon sehr viele Codeschnipsel gefunden, doch irgendwie bekomme ich es einfach nicht hin die richtigen Teile zusammen zu fügen. Ich würde mich riesig freuen, wenn es jemanden gibt, der mir bei meinem Anliegen halfen kann. Ich versuche es mal alles zu dokumentieren, was ich mir vorstelle.

Also ich möchte gern per Skript:

Einen neuen Ordner erstellen "Ordnername" Ordnername würde ich gern selbst festlegen.
Der Ort des Ordners soll immer auf dem Desktop des jeweilig angemeldeten Benutzers liegen
Der Ordner soll zudem eine neues Icon bekommen, die Icon Datei liegt heute auf einem Externen Sharepointpfad - damit die Icon immer angezeigt werden sollten die .ico-Datei an einem definierten Ort (Lokal zum Benutzer kopiert werden wie z.B,"C:/Daten/EDV" - "EDV" gibt es noch nicht).

In dem Ordner sollen dann Verknüpfungen von unterschiedlichen Exceldateien, Worddateien, Powerpointdateien erstellt werden die auch bestimmte Namen und neue Icon bekommen.

Den Part mit den Icons und den Verknüpfungen habe ich schon hinbekommen, aber die Ordner Situation bekomme ich nicht eingebaut. Des Weiteren soll der Code so aufgebaut sein, dass ich jederzeit neue Verknüpfungen hinzufügen kann.

dim objFSO

 
set objFSO = CreateObject("Scripting.FileSystemObject")  
 
quelle ="\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\Neuesicon.ico"  
 
ziel = "C:\Daten\Absatz.ico"  
 
objFSO.copyfile quelle, ziel


Set oWSH = CreateObject("WScript.Shell")  
strDesktop = oWSH.SpecialFolders("Desktop")  
Set sh = CreateObject("WScript.Shell")  
Set shortcut = sh.CreateShortcut(strDesktop & _
"\Testname-Verknüfung.lnk")  
shortcut.IconLocation = "C:\Daten\Neuesicon.ico"  
shortcut.Save
Set oCS = oWSH.CreateShortcut(strDesktop & _
"\Testname-Verknüfung.lnk")  
With oCS
.TargetPath = "\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\\Exceltestdatei.xlsm\"  
.Save
End With

Ich würde mich soooo sehr freuen, wenn Ihr mir helfen könntet.

P.s. das ist mein erster Post face-smile.

Edit: es ist natürlich eine Frage und vielleicht mal eine Anleitung. Bitte sonst gern verschieben face-sad

Danke und viele Grüße
Seger

Content-Key: 364111

Url: https://administrator.de/contentid/364111

Printed on: April 23, 2024 at 23:04 o'clock

Member: em-pie
em-pie Feb 09, 2018 updated at 08:05:47 (UTC)
Goto Top
Moin,

ich tippe mal, dass VBS ein Problem damit hat, eine VErknüpfung anzulegen, wenn der Zielordner noch nicht existent ist...
Welchen Fehler erhältst du denn??

Bzgl. der flexibilität für die Anlage neue Shortcuts würde ich mir Funktionen bauen, und diese dann für jede neue Verknüpfung mit den erforderlichen Parametern aufrufen. Logisch betrachtet wie folgt:

'Skript Starten  
' OPTION EXPLICIT  

'Funktionsaufrufe  
strReturn = CreateShortcut("\Subfolder", "Testname-Verknüfung", "\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\Exceltestdatei.xlsm", "C:\Daten\Neuesicon.ico")  

strReturn = CreateShortcut("\Subfolder4711", "Verknüfung0815", "\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\Exceltestdatei.xlsm", "C:\Daten\Neuesicon.ico")  
...

'Funktionen  
FUNCTION CreateShortcut(byVal ShortLoc, byVal ShortName, byVal Target, byVal IcoSrc)
 ' ShortLoc = Ort, an dem die Verknüpfung erstellt werden soll  
 ' ShortName = Name der Verküpfung  
 ' Target = Ziel, auf das die Verknüpfung verweisen soll  
 ' IcoSrc = Pfad der ICO-Datei  

 DIM [deine Variablen]

 Set oWSH = CreateObject("WScript.Shell")  
 strDesktop = oWSH.SpecialFolders("Desktop") 'ggf. anpassen  
 Set sh = CreateObject("WScript.Shell")  
 Set shortcut = sh.CreateShortcut(strDesktop & "\" & ShortName & ".lnk")  
 shortcut.IconLocation = "IcoSrc"  
 shortcut.Save
 Set oCS = oWSH.CreateShortcut(strDesktop & "\" & ShortName & ".lnk")  
 With oCS
  .TargetPath = ShortLoc 
  .Save
 End With
 
 IF Fehler <>0 THEN
  'hier müsstest du dann noch Mechanismen einbauen, die Im Fehlerfalle eine Rückmeldung erzeugen  
  strError = "ich bin ein Fehler"  
 ELSE IF
   strError = "ich bin kein Fehler"  
 END IF

 CreateShortcut = strError 'hier gibst du den Fehler an den obigen Funktionsaufruf zurück  
END FUNCTION

Dann am besten noch eine Funktion einbauen, die dir prüft, ob deine Ordnerstruktur am Ziel existiert, wenn nicht, erstellen lassen. Hilfe findest du mit google/ hier im Board

Zu guter letzt noch etwaige Fehler abfangen.....


Aber mal anders:
wenn ihr eine AD-Struktur habt, warum lässt du die Verknüpfungen nicht via GPO erstellen?
geht viel einfacher/ schneller, als das irgendwie mit VBS/ Powershell/ Batch abzufackeln...

Gruß
em-pie
Member: Tektronix
Tektronix Feb 09, 2018 at 07:58:14 (UTC)
Goto Top
Hallo,
mit Powershell einen Ordner, mit Abfrage des Ordnernamens, auf dem Desktop des Benutzers anlegen geht so:
$User1 = $Env:USERPROFILE 
$Ordner1 = $(Read-host 'Ordnername eingeben')  
New-Item $User1\Desktop\$Ordner1 -type directory
Member: Seger85
Seger85 Feb 09, 2018 updated at 09:10:46 (UTC)
Goto Top
Hey du,

herzlichen Dank das du Dir das anschaust und mir hilfst. Bevor ich jetzt neue Fragen stelle versuche ich mich nochmal konkreter auszudrücken und einige deiner Fragen zu beantworten. Über GPO kann ich leider nicht gehen, da die Admins nicht in unserem Land sitzen und ich nur beschränkte Rechte habe und das eher ein Vorstoß aus einer Abteilung ist. Ich habe in der Vergangenheit mit meinem Muster einfach per .vbs Datei entsprechende Vernüpfungen zu wichtigen Dokumenten geschaffen. Jetzt werden es aber immer mehr und ich will die Verknüfungen in einem Ordner auf dem Desktop zusammenfassen bzw. Sammeln.

Die .vbs Datei liegt auch auf einem Sharepoint und wird momentan per link in einer Mail an alle verendet.

Die .ico Dateien liegen auch auf einen Ort im Sharepoint und die Exceldateien auch.
Jetzt wollte ich das sich auf dem Desktop ein Ordner erstellt und in dem Ordner Verknüpfungen liegen mit neuem .ico.

Die .ico Dateien die noch auf dem Sharepoint liegen will zusätzlich in den lokalen Pfad C:\Daten\EDV kopieren damit die Verknüpfungen die Icon behalten wenn keine VPN-Verbindung zum Intranet besteht.

Ich glaube du hast schon oben in die richtige Richtung gedacht, aber irgendwie bekomme ich es nicht zusammenkopiert. Hilft dir meine neue Beschreibung vielleicht nochmal Änderungen vorzunehmen.

**Kopiere ich das einfach in die .txt Datei oder muss ich noch " ' " entfernen?**  

'Skript Starten  
' OPTION EXPLICIT  

**Das Beispiel "Funktionsaufrufe" sieht so aus als wenn ich die .ico in mehrer Ordner schieben würde?  
Ich verstehe es einfach nicht und bin gerade dabei sehr viel zu lernen, entschuldige. **

'Funktionsaufrufe  
strReturn = CreateShortcut("\Subfolder", "Testname-Verknüfung", "\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\Exceltestdatei.xlsm", "C:\Daten\Neuesicon.ico")  

strReturn = CreateShortcut("\Subfolder4711", "Verknüfung0815", "\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\Exceltestdatei.xlsm", "C:\Daten\Neuesicon.ico")  
...

**Oder ist das oben genau richtig und die Funktion erstellt alles wie es mir vorstelle?**

'Funktionen  
FUNCTION CreateShortcut(byVal ShortLoc, byVal ShortName, byVal Target, byVal IcoSrc)
 ' ShortLoc = Ort, an dem die Verknüpfung erstellt werden soll  
 ' ShortName = Name der Verküpfung  
 ' Target = Ziel, auf das die Verknüpfung verweisen soll  
 ' IcoSrc = Pfad der ICO-Datei  

Bei mir ist überhaupt keine Meldung gekommen, ich weiß halt überhaupt nicht wo ich anfangen soll.

Mein Versuch einen Ordner zu erstellen, hatte ich so gelöst:
Dim objFSO, newDIR


ziel="C:\Daten\EDV\"  
 
Set objFSO = CreateObject("Scripting.FileSystemObject")    
 
if objFSO.Folderexists(ziel) = false then
 
Set newDIR = objFSO.CreateFolder(ziel)
 
end if

Theoretisch müsste der Code als erstes kommen. Wenn schon erstellt dann brauchst du den Ordner nicht erstellen, sonst erstelle den.
"C:\Daten\EDV"
Danach das selbe für einen neuen Ordner auf dem Desktop wie z.B. "Desktop\Tool-Box"
Dann soll das Skript einige .ico Dateien vom Sharepoint in den Ordner "C:\Daten\EDV" kopieren wenn das jeweilige Icon da noch nicht liegt.
Dann wird dem neuen Ordner auf dem Desktop "Tool-Box" ein Icon aus dem Ordner "C:\Daten\EDV" zugewiesen.

Dann steht der Ordner face-smile auf dem Desktop und die Iconsammlung ist lokal gespeichert.

Danach sollen Verknüpfungen von den Exceldateien in dem Ordner auf dem Desktop "Tool-Box" erstellt werden und selbstdefinierte Namen und Icon bekommen. wie z.B. "Absatztool" und nehme dafür das Icon aus C:\Daten\EDV\Absatztoll.ico.

Ich hoffe ich konnte ein wenig Licht rein bringen, ich bin einfach absoluter Anfänger, entschuldige.

Danke für Deine HILFE, Danke!

VG
Seger
Member: Seger85
Seger85 Feb 09, 2018 at 09:18:36 (UTC)
Goto Top
Danke für die Idee und schnelle Hilfe, hab gerade @em-pie geantwortet und ein wenig mehr Klarheit geschaffen.

Powershell würde auch gehen. Vielleicht kannst du Dir ja nochmal die oben aufgeführte Erklärung durchlesen. Em-pie war schon ziemlich na dran.

Powershell kann man auch per Mail verteilen?

Danke für die Idee, vielleicht geht es ja mit Powershell einfacher!?!

Danke und viele Grüße

Seger
Member: em-pie
em-pie Feb 09, 2018 updated at 09:42:58 (UTC)
Goto Top
Also,

Mit der von mir inhaltlich nicht getesteten und fix zusammengeschusterten Funktion hast du ein Grundgerüst, welches zunächst mal dafür sorgt, dass du deine Shortcuts erstellst.

Dadurch, dass du immer den selben Ablauf beim ANlegen von Shortcuts haben willst, macht es sinn, einmal einen Standard zu definieren (die Funktion) und diesen Standard dann mit den sich wechselden Parametern aufzurufen.
Du fütterst die Funktion dann nur noch mit den dynamischen Werten und der Rest läuft.


In meinem obigen Post/ Code, speziell Zeile 5 und 7 wird dann die Funktion aufgerufen und die Parameter mitgegeben. Hier wird keine Datei irgendwo hinkopiert, sondern die Funktion mit den erforderlichen Variablen gefüttert.

Mache dich mal mit VBS und Funktionen vertraut.


Als Tipp, wenn du vbs-Skripte testen willst:

cmd -> cscript.exe "Pfad zu deiner vbs-Date"

Solle es fehler geben, zeigt er die hier an...


dit:
baue deinen "Ordner erstellen"-Code in die Funktion mit ein, dann musst du das nicht bei jedem neuen Shortcut neu scripten.
Member: Seger85
Seger85 Feb 09, 2018 at 10:07:39 (UTC)
Goto Top
Okay, ich versuche mal alles zusammenzufügen face-smile

Ich melde mich wieder wenn es funktioniert oder ich Hilfe benötige.

Ein Frage noch was meinst du damit:

DIM [deine Variablen] ?

Also zum erstellen der Ordner hab ja das "Dim objFSO, newDIR" jetzt müsste da doch noch was zu oder?

Bei meinem jetzigen Ordner-Code habe ich ja auch auch noch nicht das mit dem Icon, aber vielleicht kann ich das ja auch zusammenkopieren, oder hast du da noch eine Erweiterung des Ordner-Codes?

Danke bis hier hin!

VG
Seger
Member: Seger85
Seger85 Feb 09, 2018 updated at 11:33:18 (UTC)
Goto Top
Es tut mir leid, aber ich hab da so wenig Ahnung von dass ich nicht weiß wo ich was hinkopieren soll und überhaupt weiterkommen soll.

Ich glaube wenn es niemanden gibt der mir die richtige Reinfolge erstellt und danach erklärt, muss ich das Projekt beenden.

dim newDIR,objFSO

ziel="C:\Daten\EDV\"  
 
if objFSO.Folderexists(ziel) = false then
 
Set newDIR = objFSO.CreateFolder(ziel)



 
set objFSO = CreateObject("Scripting.FileSystemObject")  
 
quelle ="\\sharepoint.com\sites\Freigegebene Dokumente\EDV\Absatz.ico"  
 
ziel = "C:\Daten\EDV\Absatz.ico"  
 
objFSO.copyfile quelle, ziel


Set oWSH = CreateObject("WScript.Shell")  
strDesktop = oWSH.SpecialFolders("Desktop\Tool-Box")  
Set sh = CreateObject("WScript.Shell")  
Set shortcut = sh.CreateShortcut(strDesktop & _
"\Absatz -  Umsatz Tool.lnk")  
shortcut.IconLocation = "C:\Daten\EDV\Absatz.ico"  
shortcut.Save
Set oCS = oWSH.CreateShortcut(strDesktop & _
"\test.lnk")  
With oCS
.TargetPath = "\\sharepoint.com\sites\Freigegebene Dokumente\EDV\\testdatei.xlsm\"  
.Save
end with

So würde ich das jetzt haben, ohne deine Funktionen, weil ich nicht weiß wohin und das mit dem Icon für den Ordner ist auch noch nicht drin. Ganz davon abgesehen, dass es auch so wie von mir oben abgebildet nicht geht.

Kann vielleicht nochmal jemand sich dem annehmen, @em-pie, dreh sonst sicher gleich durch face-smile.

@Tektronix, vielleicht ist das ja in deinen Augen mit Powershell schneller und einfacher zu lösen.

Bitte nicht falsch verstehen, ich will das lernen, aber durch immer kleine Codeschnipsel checke ich es nicht.

Danke für alles und viele Grüße
Gerry
Member: em-pie
em-pie Feb 09, 2018 at 12:10:36 (UTC)
Goto Top
Also eigentlich habe ich dir oben schon alles mitgegeben.

Ich halte es aber für wenig sinnvoll, dir ein komplettes Script zu geben, welches du nicht verstehst.
Denn wenn etwas angepasst werden muss, stehst du ja auf dem Schlauch ud fragst hier wieder.

Fange mal mit vbs klein an: https://www.a-coding-project.de/ratgeber/vbscript/prozeduren-und-funktio ...

Wenn du das Prinzip der Funktionen verstanden hast wirst du auch mit meinem obigen Script weiterkommen.

und baue bei den Versuchen aus dem o.g. Link immer ein
wscript.echo "Ausgabe: " & [deine Variable] ein, damit du die Ausgabe auch siehst.


Mit deiner Variante (mal unabhängig ob sie klappt oder nicht) hast du pro Verknüpfung ~ 30 Zeilen Code, bei 20 Verknüpfungen sind das ca. 600 Zeilen.
Mit meinem Ansatz ca. 40-50 Zeilen (mit Fehlerabfangen auch mal rund 60-90) in der Funktion plus je Shortcut 1-2 Zeilen. Das ganze ist also wesentlich übersichtlicher und performanter....
Member: Seger85
Seger85 Feb 09, 2018 at 12:54:48 (UTC)
Goto Top
Du hast ja recht, aber in deiner Darstellung ist doch das Ordner Thema nicht verarbeitet. Wenn du dein Script sortieren würdest mit der Ordner Thematik und das er die Icons in den Ordner kopiert dann wäre das ja und ich würde es auch besser verstehen, aber mit dem aktuellen Vorschlag komme ich ja "nur" schöner und kürzer als vorher weiter. Die eigentlich nächste Stufe ist ja die Ordnerthematik.

Deine kurze Variante ist auch super, aber eben ohne die Ordnererstellung.

Danke für den Lernlink. bin ja schon dabei vieles zu lesen und zu verstehen.

Wenn du mir da Script komplett gibst frage ich dich nicht mehr face-smile.

VG
Seger
Mitglied: 135333
Solution 135333 Feb 09, 2018, updated at Feb 12, 2018 at 14:48:40 (UTC)
Goto Top
Warum nimmst du keine GPO für den Kram?

Naja, hier als Powershell
# Name des Ordners auf dem Desktop
$ordnername = "BlaBlub"  
# Icon für den Ordner
$ordnericon = '\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\Ordnericon.ico'  

# Links hier eintragen
$links = @"  
"Demolink.lnk";"\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\datei.xlsm";"\\Server\Share\icon1.ico"  
"Demolink.lnk";"\\sharpointseite.Pfad.com\sites\Test\Freigegebene Dokumente\Test\Test\datei2.xlsm";"\\Server\Share\icon2.ico"  
"@ | ConvertFrom-Csv -Delimiter ";" -Header "Name","Ziel","Icon"  

# ==================================

# Helper-Object zum Erstellen der Links
$shell = New-Object -Com Wscript.Shell
# Zielpfad auf dem Desktop
$targetpath = "$env:USERPROFILE\Desktop\$ordnername"  
$localiconpath = "$env:APPDATA\myicons"  
# Zielordner erstellen wenn nicht vorhanden
@($targetPath,$localiconpath) | %{if (!(Test-Path $_)){md $_ -Force | out-null}}

# Ordner-Icon lokal kopieren
copy-item $ordnericon -Destination $localiconpath

# Ordner muss das System-Attribut haben damit das Icon sichtbar wird
(Get-Item $targetpath).Attributes = 'Directory, System'  

# desktop.ini für das Ordner-Icon erstellen
@"  
[.ShellClassInfo]
IconResource=$localiconpath\$([IO.Path]::GetFileName($ordnericon)),0
"@ | sc "$targetpath\desktop.ini" -Force  
# Desktop.ini Attribute hidden/system setzen
[System.IO.File]::SetAttributes("$targetpath\desktop.ini", [System.IO.FileAttributes]::Hidden)  

# itteriere Links
$links | %{
    # kopiere icon in einen lokalen Ordner wenn es noch nicht existiert
    $iconpath = "$localiconpath\$([IO.Path]::GetFileName($_.Icon))"  
    if(!(Test-Path $iconpath)){copy-item $_.Icon -Destination $iconpath}
    
    # Linkpfad zusammensetzen
    $linkpath = "$targetpath\$($_.Name)"  
    write-host "Erstelle/Update Link '$linkpath'." -F Green  
    # Link erstellen
    $lnk = $shell.CreateShortCut($linkpath)
    $lnk.TargetPath = $_.Ziel
    $lnk.IconLocation = $iconpath
    $lnk.Save()
}
Tschö und nich zu viel bechern das Wochenende, das gibt Abzüg!

Gruß Snap
Member: em-pie
em-pie Feb 10, 2018 at 10:22:14 (UTC)
Goto Top
Moin,

auch wenn folgender Code, etwas größer ist, als der von Snapdragon, hier mal eine VBS-Variante, die dir die Ordnerstruktur rekusriv erstellt, wenn der Pfad, an dem die Verknüpfung hingeschrieben werden soll, nicht existiert:

OPTION EXPLICIT

'Funktionsaufrufe, je zu erstellender Verknüpfung ein Aufruf  
fktCreateShortcut "my1stShortcut", "C:\tmp\VBSTEST\Shortcuts", "C:\tmp\logit.txt", "C:\tmp\icon.ico"  
fktCreateShortcut "my2ndShortcut", "C:\tmp\VBSTEST\Shortcuts\Tools", "C:\tmp\logit.txt", "C:\tmp\icon_test.ico"  
fktCreateShortcut "my3rdShortcut", "C:\tmp\VBSTEST\Shortcuts\Tools\3rdSub", "C:\tmp\logit.txt", "C:\tmp\icon_test.ico"  

'die Funktionen  
FUNCTION fktCreateShortcut(byVal argSCName, byVal argSCLocation, byVal argSCTarget, byVAL argSCIco)
	DIM strSCName, strSCLocation, stSCTarget, strSCIco, strFuncName
	DIM objShortcut, objWSh
	strFuncName = "fktCreateShortcut: "  
	
	'die übergebenen Parameter in lokale Variablen schreiben  
	strSCName = argSCName
	strSCLocation = fktCreateFolder(argSCLocation) 'weiterer Funktionsaufruf  
	stSCTarget = argSCTarget
	strSCIco = argSCIco
	
	'erstellen der Verknüpfung, sofern das Ziel vorhanden ist bzw. es beim erstellen keine Probleme gegeben hat  
	IF strSCLocation = argSCLocation Then
		Set objWSh = CreateObject("Wscript.shell")  
		SET objShortcut = objWSh.CreateShortcut(strSCLocation & "\" & strSCName & ".lnk")  
		objShortcut.WindowStyle = 3 '3 = Maximized | 7 = Minimized  | 4 = Normal  
		objShortcut.IconLocation = strSCIco
		objShortcut.TargetPath = argSCTarget
		objShortcut.Save
		Set objWSh = Nothing	
	END IF
	
End Function

FUNCTION fktCreateFolder(byVal argFolder)
	Dim objFSO, objFolder, CreateFolder
	DIM strFuncName, strFolder, strReturn, strParentFolder, strReturnParent
	DIM boolFolderExists
	strFuncName = "fktCreateFolder: "  
	
	strFolder = argFolder
	'wscript.echo strFuncName & strFolder  

	Set objFSO = CreateObject("Scripting.FileSystemObject")  
	
	IF NOT objFSO.FolderExists(strFolder) Then
		'wscript.echo strFuncName & "Not exists: " & strFolder  
		strParentFolder = objFSO.GetParentFolderName(strFolder)
		IF NOT objFSO.FolderExists(strParentFolder) Then
			'wscript.echo strFuncName & "Not exists: " & strParentFolder  
			'wscript.echo strFuncName & "Create    : " & strParentFolder  
			strReturnParent = fktCreateFolder(strParentFolder)
			'wscript.echo strFuncName & "Created   : " & strParentFolder & " (" & strReturnParent & ")"  
		END IF 
		'wscript.echo strFuncName & "Exists: " & strParentFolder  
		
		Set objFolder = objFSO.CreateFolder(strFolder)
		CreateFolder = objFolder.Path			
		SET objFolder = Nothing
		
		'Ordner neu erstellt  
		strReturn = strFolder
	ELSE
		'Ordner ist schon vorhanden  
		strReturn = strFolder
	END IF
	
	Set objFSO = Nothing
	'wscript.echo strFuncName & " end " & strReturn  
	fktCreateFolder = strReturn
END Function

vielleicht nicht sauber gescriptet/ ginge es auch etwas schlanker, aber es funktioniert....
Member: Seger85
Seger85 Feb 12, 2018 updated at 10:30:02 (UTC)
Goto Top
Hey @135333,

das ist ja genial, das Script ist super aufgebaut und sehr verständlich was er wann genau macht, verspreche das ich mich jetzt ein wenig mehr mit der ganzen Thematik beschäftige face-smile.

Eine Frage habe ich noch:

Erstellt er bei deinem Testlauf auch das Icon für den Ordner, ich bekomme keine Fehlermeldung wenn ich das Script starte.
Der Ordner selbst wird erstellt, die Links und die Icon in dem Ordner werden auch richtig angelegt. Die Icons speichert er auch im $localiconpath = "$env:APPDATA\myicons" Ordner. Doch leider wird beim Ordner auf dem Desktop nicht das Icon geändert und/oder eine Desktop.ini erstellt. Das Icon für den Ordner habe ich auch nicht im Ordner $localiconpath = "$env:APPDATA\myicons" gefunden.

Hast du noch eine Idee bzw. kannst du das nachvollziehen?

@em-pie, dir gebührt genauso viel DANK. Ich werde mir Dein Script auch gleich in die Einzelteile zerlegen um ein wenig mehr zu verstehen! DANKE!


DANKE für diese geniale Unterstützung!

Viele Dank!
Mitglied: 135333
135333 Feb 12, 2018 at 11:53:22 (UTC)
Goto Top
Zitat von @Seger85:
Eine Frage habe ich noch:
Doch leider wird beim Ordner auf dem Desktop nicht das Icon geändert und/oder eine Desktop.ini erstellt. Das Icon für den Ordner habe ich auch nicht im Ordner $localiconpath = "$env:APPDATA\myicons" gefunden.

Hast du noch eine Idee bzw. kannst du das nachvollziehen?
Jepp, da habe ich vergessen das Icon in den lokalen Ordner zu kopieren. Die Zeile wurde oben entsprechend ergänzt.
Member: Seger85
Seger85 Feb 12, 2018 updated at 12:45:45 (UTC)
Goto Top
Hey @135333 face-smile,

jo, jetzt kopiert er die .ico Datei auch in den lokalen Pfad, aber der Ordner übernimmt das Icon nicht und es wird keine desktop.ini erstellt.

Echt Genial wie klein und komfortabel das Script ist, danke nochmal face-smile.

So bringt das total Spaß face-smile.

VG
Seger
Mitglied: 135333
135333 Feb 12, 2018 updated at 13:07:18 (UTC)
Goto Top
Dat is normal, der Explorer hat die Änderung einfach noch nicht mitbekommen (Wie so vieles was er nicht merkt face-smile), Shell neu starten oder an und abmelden.
Echt Genial wie klein und komfortabel das Script ist, danke nochmal .
Via GPO hättest du es noch komfortabler gehabt face-wink.
Member: Seger85
Seger85 Feb 12, 2018 at 13:21:17 (UTC)
Goto Top
Zitat von @135333:

Dat is normal, der Explorer hat die Änderung einfach noch nicht mitbekommen (Wie so vieles was er nicht merkt face-smile), Shell neu starten oder an und abmelden.
Echt Genial wie klein und komfortabel das Script ist, danke nochmal .
Via GPO hättest du es noch komfortabler gehabt face-wink.

Okay, das hatte ich auch erst gedacht, aber nach dem Neustart/Abmelden oder den kleinen Weg über F5 wird kein Icon für den Ordner gesetzt.
Das Icon wird jetzt abgelegt, die Links funtionieren zu 100%, nur die Desktop.ini ist nicht angelegt und das Icon des Ordners bleibt das alte Ordnericon.

Ja, GPO wäre zu einfach gewesen, aber leider bekommt unsere EDV-Abteilung das nicht hin mal für alle Kollegen einheitlich zu gestalten. Jeder sucht sich bei uns im Intranet tot. Aber jetzt wird es ein wenig aufgeräumter dank dir!

Hast du noch eine Idee bzgl. des Ordner?

VG
Seger
Mitglied: 135333
135333 Feb 12, 2018 updated at 13:34:52 (UTC)
Goto Top
nur die Desktop.ini ist nicht angelegt und das Icon des Ordners bleibt das alte Ordnericon.
Doch wird hier einwandfrei angelegt!
Dein User der das Skript ausführt hat sehr wahrscheinlich zu wenig Rechte um das System-Attribut zu setzen.

Edit: Skript wurde oben noch etwas angepasst
Member: Seger85
Seger85 Feb 12, 2018 at 13:49:51 (UTC)
Goto Top
Zitat von @135333:

nur die Desktop.ini ist nicht angelegt und das Icon des Ordners bleibt das alte Ordnericon.
Doch wird hier einwandfrei angelegt!
Dein User der das Skript ausführt hat sehr wahrscheinlich zu wenig Rechte um das System-Attribut zu setzen.

Edit: Skript wurde oben noch etwas angepasst


HAHA, das Skript funktioniert jetzt zu 99,9%, wie geil ... die Desktop.ini wird angelegt und das Icon des Ordners ändert sich auch ohne Neustart face-smile.

Eine "Kleinigkeit" noch, in der Desktop.ini ist mir der Punkt "IconResource=" aufgefallen der auf die Intranetseite verweist.
Eigentlich sollten die Verknüpfungen und der Ordner sich die anschließen lokal besorgen, damit bei einem Neustart ohne VPN die Icon bestehen bleiben. Ich glaube erkannt zu haben am "IconResource=", dass das wohl nicht so sein wird, oder?

Ganz ehrlich, hab es jetzt schon oft gesagt, aber echt cool von dir, danke dir vielmals!

Viele Grüße
Seger
Mitglied: 135333
135333 Feb 12, 2018 updated at 14:50:34 (UTC)
Goto Top
Zitat von @Seger85:
Eine "Kleinigkeit" noch, in der Desktop.ini ist mir der Punkt "IconResource=" aufgefallen der auf die Intranetseite verweist.
Schade, eigentlich habe ich das für dich als "Lern-Aufgabe" gelassen das zu korrigieren .. face-sad, naja siehe Lösung Skript oben ...

Wenns das dann war bitte noch einen Haken dran.

Gruß snap
Member: Seger85
Seger85 Feb 12, 2018 updated at 15:10:59 (UTC)
Goto Top
Zitat von @135333:

Zitat von @Seger85:
Eine "Kleinigkeit" noch, in der Desktop.ini ist mir der Punkt "IconResource=" aufgefallen der auf die Intranetseite verweist.
Schade, eigentlich habe ich das für dich als "Lern-Aufgabe" gelassen das zu korrigieren .. face-sad, naja siehe Lösung Skript oben ...

Wenns das dann war bitte noch einen Haken dran.

Gruß snap


Hab ich auch so verstanden, war schon auf den richtigen weg
IconResource=$localiconpath\$([IO.Path]::GetFileName($ordnericon)),0

hatte mich schon an den Links orientiert aber meine erste Lösung war nicht schön:
IconResource=$localiconpath\Ordner.ico ... weil es wieder ein absoluter Pfad gewesen wäre und ich dein schönes Skript "zerstört" hätte.

Aber der Lerneffekt ist da wie du dir über \$([IO.Path]::GetFileName($ordnericon)) den Dateinamen inkl. Endung geholt hast face-smile.

Ich probiere es jetzt gleich nochmal aus und setze dann wahrscheinlich gleich den Haken als erledigt face-smile.

Wahnsinn!
Danke!

VG
Seger
Member: Seger85
Seger85 Feb 12, 2018 updated at 15:42:36 (UTC)
Goto Top
Also das Skript funktioniert zu 100%, ich habe es entsprechend als Lösung markiert, danke für deine lehrreichen Codezeilen!

Offtopic: Ich hab noch eine Frage vielleicht weißt du das, wenn nicht, schaue ich wie ich das Problem selbst lösen kann.
Also ich habe vor das Skript per Mail zu versenden per Link der auf die ps1-Datei verweißt. Wenn ich das Skript nun so aufrufe dann öffnet sich der Editor, ist aber ja auch logisch. Wenn ich das Standardprogramm auf Powershell ändere startet das Script zwar aber es schließt sofort mit einigen Fehlermeldungen. Die kann ich aber so schnell nicht sehen.

Hast du dazu vielleicht eine Idee oder eine andere Lösung?

Viele Grüße
Seger
Mitglied: 135333
135333 Feb 12, 2018 updated at 15:42:21 (UTC)
Goto Top
Stichwort ExecutionPolicy sollte dir für deinen Lernerfolg reichen.
Member: Seger85
Seger85 Feb 12, 2018 updated at 16:02:44 (UTC)
Goto Top
Zitat von @135333:

Stichwort ExecutionPolicy sollte dir für deinen Lernerfolg reichen.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe –ExecutionPolicy Unrestricted –NoProfile –File "\\sharepointseite\Ordner.ps1"

Ja, dass hab ich auch schon probiert, aber sobald ich sage das er der Quelle vertrauen soll, sagt eine Fehlermeldung jetzt, dass die Datei nicht vorhanden sei. Obwohl die .ps1 Datei genau da liegt!?!

Ich tüftel mal weiter, aber vielleicht siehst du ja was?

Viele Grüße
Seger
Mitglied: 135333
135333 Feb 12, 2018 updated at 16:18:50 (UTC)
Goto Top
Member: Seger85
Seger85 Feb 12, 2018 at 16:42:53 (UTC)
Goto Top

Ja genau auf den Seiten bin ich gerade unterwegs, aber keine der Varianten funktioniert.
Ich gebe hinterlege es doch gleich in den Link, oder?

wie z.B.
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File "\\Sharepointseite\Ordner.ps1"

Der Link geht auch soweit und wenn ich es in Start Programme ausführen kopiere geht es auch, aber sobald ich es über den Link öffne eben nicht.

Hab die 15 Varianten durchgelesen und die als meine Identifiziert.
Member: Seger85
Seger85 Feb 12, 2018, updated at Feb 13, 2018 at 08:42:41 (UTC)
Goto Top
Edit: Irgendwie nimmt er immer einen der "\" in der Adresse weg muss ich vielleicht eine andere Form anwenden?
Https://

Edit 2:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File "\\Sharepointseite\Ordner.ps1"
-> die Befehlszeile funktioniert wenn ich es per Copy & Past ausführe, aber wenn ich den in eine Mail packe macht Outlook aus dem Link:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File "\Sharepointseite\Ordner.ps1"
-> und dementsprechend findet er den Link nicht.

Denke ich falsch oder hast du @135333 noch eine Idee wie ich nun dein tolles Skript verteilen kann (habe keine Adminrechte und habe an eine Mail gedacht)?

Herzlichen Dank und viele Grüße
Seger
Member: Seger85
Seger85 Feb 21, 2018 at 10:06:09 (UTC)
Goto Top
Zitat von @Seger85:

Edit: Irgendwie nimmt er immer einen der "\" in der Adresse weg muss ich vielleicht eine andere Form anwenden?
Https://

Edit 2:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File "\\Sharepointseite\Ordner.ps1"
-> die Befehlszeile funktioniert wenn ich es per Copy & Past ausführe, aber wenn ich den in eine Mail packe macht Outlook aus dem Link:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File "\Sharepointseite\Ordner.ps1"
-> und dementsprechend findet er den Link nicht.

Denke ich falsch oder hast du @135333 noch eine Idee wie ich nun dein tolles Skript verteilen kann (habe keine Adminrechte und habe an eine Mail gedacht)?

Herzlichen Dank und viele Grüße
Seger

@135333 ich habe mich jetzt wirklich durch alles durchgelesen, aber ich habe nach wie vor das Problem und kann das Skript nicht per Mail versenden/verteilen. Kannst du mir vielleicht die Lösung vielleicht mitteilen? Ja, ich weiß, dass das eigentlich nicht Sinn von erlernen ist, aber ich Checke es einfach nicht.


Viele Grüße
Seger