Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Abfrage function und weitergabe der Parameter

Frage Entwicklung Batch & Shell

Mitglied: complex

complex (Level 1) - Jetzt verbinden

15.09.2014, aktualisiert 10:22 Uhr, 820 Aufrufe, 6 Kommentare, 2 Danke

Hallo zusammen,

bin leider noch blutiger anfänger im Bereich Powershell.
Zu meinem Problem:
Ich möchte ein Script schreiben, dass uns in der Firma das kopieren von benutzerkonten vereinfacht (z.B. Mitarbeiter erhält neues Laptop).
Da teilweise aber auch mehrere Benutzerkonten auf einem Rechner genutzt werden, soll später die Abfrage kommen, ob ein weiteres Benutzerkonto kopiert werden soll, oder nicht. Deswegen die arbeit mit "function".

#Definierte Funktionen
function Rechnerabfrage
{
#Abfrage des Hostnames des alten Rechners
$rechneralt = Read-Host "Name des bisheriger Rechners"

#Abfrage des Zielhosts (Neuer Rechner)
$rechnerneu = Read-Host "Name des neuen Rechners"
}
function Userabfrage
{

#Abfrage des zu kopierenden Benutzerkontos
$Username = Read-Host "Zu kopierendes Benutzerkonto eingeben"
}


#Generierte Pfade aus Abfrage "Rechner alt"
$PfadDesktopalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Desktop\"
$Pfadfavoritesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Favorites\"
$Pfadlinksalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Links\"
.......... usw.....

Leider setzt er die Variablen aus den Abfragen nicht unten in die Netzwerkpfade.
Was mache ich falsch?

als Ausgabe kommt dann:
\\\C$\Users\\Desktop\
usw...

Danke für eure Hilfe.

Grüße,
Complex
Mitglied: colinardo
LÖSUNG 15.09.2014, aktualisiert um 10:22 Uhr
Moin,
Leider setzt er die Variablen aus den Abfragen nicht unten in die Netzwerkpfade.
Was mache ich falsch?
1. weil du die Variablen erst in den Funktionen verwendest, und dort sind sie dann nur lokal in der Funktion definiert und außerhalb dieser nicht mehr.
Lese du dazu unbedingt dieses Kapitel zu Variable-Scopes durch: http://technet.microsoft.com/de-de/library/hh847849.aspx

2. Du rufst deine Funktionen ja garnicht auf ?! Zumindest sehe ich das hier in deinem Ausschnitt nicht.

Also entweder definiere vorher außerhalb der Functions Scriptvariablen in dieser Art
$script:rechneralt
und setze den Inhalt der Scriptvariablen in der Function:
$script:rechneralt = Read-Host ............
Beispiel mit Scriptvariablen
01.
#Scriptvariablen vor Verwendung definieren 
02.
$script:rechneralt = "" 
03.
$script:rechnerneu = "" 
04.
 
05.
function Rechnerabfrage { 
06.
   $script:rechneralt = Read-Host "Name des bisheriger Rechners" 
07.
   $script:rechnerneu = Read-Host "Name des neuen Rechners" 
08.
09.
 
10.
#Funktion aufrufen 
11.
Rechnerabfrage 
12.
 
13.
#Variablen ausgeben 
14.
write-host $script:rechneralt 
15.
write-host $script:rechnerneu
oder du verwendest die Function dafür wofür sie eigentlich gedacht ist, zur Rückgabe von Werten. Dafür gibt es in Funktionen das Statement return $variable

Beispiel mit Rückgabe von Werten aus der Funktion als Hashtable
01.
function Rechnerabfrage { 
02.
    # Hashtable für mehrere Werte erzeugen 
03.
    $ht = @{} 
04.
    $ht.rechneralt = Read-Host "Name des bisheriger Rechners" 
05.
    $ht.rechnerneu = Read-Host "Name des neuen Rechners" 
06.
    # Hashtable aus der Funktion zurückgeben 
07.
    return $ht 
08.
09.
# Funktion ausführen und Werte übergeben 
10.
$result = Rechnerabfrage 
11.
 
12.
#Ausgabe der Variablen 
13.
write-host $result.rechneralt 
14.
write-host $result.rechnerneu
Grüße Uwe

p.s. Bitte nutze Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Bitte warten ..
Mitglied: complex
15.09.2014, aktualisiert um 09:42 Uhr
ich bin überfordert :D

wie gesagt: mein 2. Tag in Powershell. Aber Vielen dank fürs Weiterhelfen.
Habe es ohne erfolg probiert.

Hier nochmal das Grundkonzept:

01.
 ##Clear Screen from old Output 
02.
cls 
03.
 
04.
#************************************************************Ausführung als Administrator************************************************************** 
05.
$id=[System.Security.Principal.WindowsIdentity]::GetCurrent() 
06.
$principal=New-Object System.Security.Principal.WindowsPrincipal($id) 
07.
if(!$principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { 
08.
 $powershell=[System.Diagnostics.Process]::GetCurrentProcess() 
09.
 $psi=New-Object System.Diagnostics.ProcessStartInfo $powershell.Path 
10.
 $script=$MyInvocation.MyCommand.Path 
11.
 $prm=$script 
12.
 foreach($a in $args) { 
13.
  $prm+=' '+$a 
14.
15.
 $psi.Arguments=$prm 
16.
 $psi.Verb="runas" 
17.
 [System.Diagnostics.Process]::Start($psi) | Out-Null 
18.
 return; 
19.
20.
 
21.
#************************************************************Definierte Funktionen Teil 1*************************************************************** 
22.
function Rechnerabfrage 
23.
24.
   $script:rechneralt = Read-Host "Name des bisheriger Rechners" 
25.
   $script:rechnerneu = Read-Host "Name des neuen Rechners" 
26.
27.
 
28.
#Funktion aufrufen Rechnerabfrage 
29.
 
30.
#Variablen ausgeben 
31.
write-host $script:rechneralt 
32.
write-host $script:rechnerneu 
33.
 
34.
function Userabfrage 
35.
36.
	#Abfrage des zu kopierenden Benutzerkontos 
37.
	$script:Username = Read-Host "Benutzernamen eingeben" 
38.
	Write-Host "Kopieren wird gestartet" 
39.
40.
	 
41.
	#Scriptvariablen definieren 
42.
	$script:rechneralt = "" 
43.
	$script:rechnerneu = "" 
44.
#*******************************************************Generierte Pfade aus Abfrage "Rechner alt"***************************************************** 
45.
	$PfadDesktopalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Desktop\" 
46.
	$Pfadfavoritesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Favorites\" 
47.
	$Pfadlinksalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Links\" 
48.
	$Documentbuildingalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Document Building Blocks\" 
49.
	$Proofalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Proof\" 
50.
	$Signaturesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Signatures\" 
51.
	$Templatesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Templates\" 
52.
	$UProofalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\UProof\" 
53.
	$Officealt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Office\" 
54.
	$Systemcertificatesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\SystemCertificates\" 
55.
	$Outlookalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Outlook\" 
56.
	$OfficeUIalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Local\Microsoft\Office\" 
57.
 
58.
#*******************************************************Kopiere in folgende Pfade zu "Rechner neu"***************************************************** 
59.
	$PfadDesktopneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Desktop\" 
60.
	$Pfadfavoritesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Favorites\" 
61.
	$Pfadlinksneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Links\" 
62.
	$Documentbuildingneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Document Building Blocks\" 
63.
	$Proofneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Proof\" 
64.
	$Signaturesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Signatures\" 
65.
	$Templatesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Templates\" 
66.
	$UProofneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\UProof\" 
67.
	$Officeneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Office\" 
68.
	$Systemcertificatesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\SystemCertificates\" 
69.
	$Outlookneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Outlook\" 
70.
	$OfficeUIneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Local\Microsoft\Office\" 
71.
 
72.
#************************************************************Definierte Funktionen Teil 2************************************************************** 
73.
function Kopieren 
74.
75.
	Copy-Item $PfadDesktopalt $Pfaddesktopneu -Recurse 
76.
	Copy-Item $Pfadfavoritesalt $Pfadfavoritesneu -Recurse 
77.
	Copy-Item $Pfadlinksalt $Pfadlinksneu -Recurse 
78.
	Copy-Item $Documentbuildingalt $Documentbuildingneu -Recurse 
79.
	Copy-Item $Proofalt $Proofneu -Recurse 
80.
	Copy-Item $Signaturesalt $Signaturesneu -Recurse 
81.
	Copy-Item $Templatesalt $Templatesneu -Recurse 
82.
	Copy-Item $UProofalt $UProofneu -Recurse 
83.
	Copy-Item $Officealt $Officeneu -Recurse 
84.
	Copy-Item $Systemcertificatesalt $Systemcertificatesneu -Recurse 
85.
	Copy-Item $Outlookalt $Outlookneu -Recurse 
86.
	Copy-Item $OfficeUIalt $OfficeUIneu -Recurse 
87.
88.
function weiter 
89.
90.
 $wPowerShell=new-object -comobject wscript.shell 
91.
 
92.
 $Wartezeit = 0 # Benutzer muss selbst die Schaltfläche betätigen 
93.
 $Schaltfläche = 4 # Schaltfläche Ja und Nein 
94.
 
95.
 $Antwort=$wPowershell.popup("Kopiervorgang abgeschlossen. Soll ein weiteres Benutzerkonto kopiert werden?",$Wartezeit,"Weiterer Kopiervorgang",$Schaltfläche)  
96.
 
97.
#*********************************************************************Abfrage starten**************************************************************** 
98.
 if ($Antwort-eq 6) # Fall "Ja" oder "Yes" gedrückt wurde... 
99.
100.
 Userabfrage 
101.
 Kopieren 
102.
 weiter 
103.
104.
105.
 Rechnerabfrage 
106.
 Userabfrage 
107.
 Kopieren 
108.
 weiter 
109.
 
__________________________________________________________________________________________________________

später soll noch eine Prüffunktion rein, ob wirklich alles abgearbeitet wurde.
Nur wie gesagt, es hakt an den Pfaden. Ich habe es mal mit $script:rechneralt etc probiert. Leider ohne erfolg ;(
Bitte warten ..
Mitglied: colinardo
15.09.2014, aktualisiert um 09:40 Uhr
Habe dir oben dazu Beispiele nachgereicht
Bitte warten ..
Mitglied: complex
15.09.2014 um 10:13 Uhr
Habe die Abfragen soweit hinbekommen, allerdings startet er die "kopieren"-function nicht, sondern fragt mich direkt wieder, wie der alte Rechner heisst.

01.
 ##Clear Screen from old Output 
02.
cls 
03.
 
04.
#************************************************************Ausführung als Administrator************************************************************** 
05.
$id=[System.Security.Principal.WindowsIdentity]::GetCurrent() 
06.
$principal=New-Object System.Security.Principal.WindowsPrincipal($id) 
07.
if(!$principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { 
08.
 $powershell=[System.Diagnostics.Process]::GetCurrentProcess() 
09.
 $psi=New-Object System.Diagnostics.ProcessStartInfo $powershell.Path 
10.
 $script=$MyInvocation.MyCommand.Path 
11.
 $prm=$script 
12.
 foreach($a in $args) { 
13.
  $prm+=' '+$a 
14.
15.
 $psi.Arguments=$prm 
16.
 $psi.Verb="runas" 
17.
 [System.Diagnostics.Process]::Start($psi) | Out-Null 
18.
 return; 
19.
20.
 
21.
#************************************************************Definierte Funktionen Teil 1*************************************************************** 
22.
function Rechnerabfrage { 
23.
    # Hashtable für mehrere Werte erzeugen 
24.
    $ht = @{} 
25.
    $ht.rechneralt = Read-Host "Name des bisheriger Rechners" 
26.
    $ht.rechnerneu = Read-Host "Name des neuen Rechners" 
27.
    # Hashtable aus der Funktion zurückgeben 
28.
    return $ht 
29.
30.
# Funktion ausführen und Werte übergeben 
31.
$result = Rechnerabfrage 
32.
 
33.
 
34.
function Username { 
35.
    # Hashtable für mehrere Werte erzeugen 
36.
    $ht = @{} 
37.
    $ht.Username = Read-Host "Zu kopierendes Benutzerkonto" 
38.
    # Hashtable aus der Funktion zurückgeben 
39.
    return $ht 
40.
41.
# Funktion ausführen und Werte übergeben 
42.
$result = Username 
43.
 
44.
 
45.
Write-Host "Kopieren wird gestartet" 
46.
	 
47.
#************************************************************Definierte Funktionen Teil 2************************************************************** 
48.
function Kopieren 
49.
50.
	Copy-Item $PfadDesktopalt $Pfaddesktopneu -Recurse 
51.
	Copy-Item $Pfadfavoritesalt $Pfadfavoritesneu -Recurse 
52.
	Copy-Item $Pfadlinksalt $Pfadlinksneu -Recurse 
53.
	Copy-Item $Documentbuildingalt $Documentbuildingneu -Recurse 
54.
	Copy-Item $Proofalt $Proofneu -Recurse 
55.
	Copy-Item $Signaturesalt $Signaturesneu -Recurse 
56.
	Copy-Item $Templatesalt $Templatesneu -Recurse 
57.
	Copy-Item $UProofalt $UProofneu -Recurse 
58.
	Copy-Item $Officealt $Officeneu -Recurse 
59.
	Copy-Item $Systemcertificatesalt $Systemcertificatesneu -Recurse 
60.
	Copy-Item $Outlookalt $Outlookneu -Recurse 
61.
	Copy-Item $OfficeUIalt $OfficeUIneu -Recurse 
62.
63.
function weiter 
64.
65.
 $wPowerShell=new-object -comobject wscript.shell 
66.
 
67.
 $Wartezeit = 0 # Benutzer muss selbst die Schaltfläche betätigen 
68.
 $Schaltfläche = 4 # Schaltfläche Ja und Nein 
69.
 
70.
 $Antwort=$wPowershell.popup("Kopiervorgang abgeschlossen. Soll ein weiteres Benutzerkonto kopiert werden?",$Wartezeit,"Weiterer Kopiervorgang",$Schaltfläche)  
71.
 
72.
#*********************************************************************Abfrage starten**************************************************************** 
73.
 if ($Antwort-eq 6) # Fall "Ja" oder "Yes" gedrückt wurde... 
74.
75.
 Username	 
76.
 Kopieren		 
77.
 weiter 
78.
79.
80.
 
81.
#*******************************************************Generierte Pfade aus Abfrage "Rechner alt"***************************************************** 
82.
	$PfadDesktopalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Desktop\" 
83.
	$Pfadfavoritesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Favorites\" 
84.
	$Pfadlinksalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Links\" 
85.
	$Documentbuildingalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Document Building Blocks\" 
86.
	$Proofalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Proof\" 
87.
	$Signaturesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Signatures\" 
88.
	$Templatesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Templates\" 
89.
	$UProofalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\UProof\" 
90.
	$Officealt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Office\" 
91.
	$Systemcertificatesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\SystemCertificates\" 
92.
	$Outlookalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Outlook\" 
93.
	$OfficeUIalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Local\Microsoft\Office\" 
94.
 
95.
#*******************************************************Kopiere in folgende Pfade zu "Rechner neu"***************************************************** 
96.
	$PfadDesktopneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Desktop\" 
97.
	$Pfadfavoritesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Favorites\" 
98.
	$Pfadlinksneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Links\" 
99.
	$Documentbuildingneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Document Building Blocks\" 
100.
	$Proofneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Proof\" 
101.
	$Signaturesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Signatures\" 
102.
	$Templatesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Templates\" 
103.
	$UProofneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\UProof\" 
104.
	$Officeneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Office\" 
105.
	$Systemcertificatesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\SystemCertificates\" 
106.
	$Outlookneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Outlook\" 
107.
	$OfficeUIneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Local\Microsoft\Office\" 
108.
 
109.
 
110.
 Rechnerabfrage 
111.
 Username 
112.
 kopieren 
113.
 weiter
Bitte warten ..
Mitglied: colinardo
LÖSUNG 15.09.2014, aktualisiert um 10:40 Uhr
Also von deinem Function gebummsel, krieg ich Gänsehaut

Ich würde es in dieser Art zusammenfassen, Fehlerabfragen der jeweiligen Befehle fehlen hier aber natürlich noch, dafür habe ich jetzt gerade keine Zeit.
01.
 ##Clear Screen from old Output 
02.
cls 
03.
$wPowerShell=new-object -comobject wscript.shell 
04.
 
05.
$script:rechneralt = "" 
06.
$script:rechnerneu = "" 
07.
 
08.
#************************************************************Ausführung als Administrator************************************************************** 
09.
$id=[System.Security.Principal.WindowsIdentity]::GetCurrent() 
10.
$principal=New-Object System.Security.Principal.WindowsPrincipal($id) 
11.
if(!$principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { 
12.
 $powershell=[System.Diagnostics.Process]::GetCurrentProcess() 
13.
 $psi=New-Object System.Diagnostics.ProcessStartInfo $powershell.Path 
14.
 $script=$MyInvocation.MyCommand.Path 
15.
 $prm=$script 
16.
 foreach($a in $args) { 
17.
  $prm+=' '+$a 
18.
19.
 $psi.Arguments=$prm 
20.
 $psi.Verb="runas" 
21.
 [System.Diagnostics.Process]::Start($psi) | Out-Null 
22.
 return; 
23.
24.
 
25.
#************************************************************Definierte Funktionen Teil 1*************************************************************** 
26.
function CopyProfile ([bool]$newPC = $true) { 
27.
    if ($newPC){ 
28.
        $rechneralt = Read-Host "Name des bisheriger Rechners" 
29.
        $rechnerneu = Read-Host "Name des neuen Rechners" 
30.
        $script:rechneralt = $rechneralt 
31.
        $script:rechnerneu = $rechnerneu 
32.
    }else{ 
33.
        $rechneralt = $script:rechneralt 
34.
        $rechnerneu = $script:rechnerneu 
35.
36.
 
37.
    $Username = Read-Host "Zu kopierendes Benutzerkonto" 
38.
 
39.
    #*******************************************************Generierte Pfade aus Abfrage "Rechner alt"***************************************************** 
40.
	$PfadDesktopalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Desktop\" 
41.
	$Pfadfavoritesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Favorites\" 
42.
	$Pfadlinksalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\Links\" 
43.
	$Documentbuildingalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Document Building Blocks\" 
44.
	$Proofalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Proof\" 
45.
	$Signaturesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Signatures\" 
46.
	$Templatesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Templates\" 
47.
	$UProofalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\UProof\" 
48.
	$Officealt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Office\" 
49.
	$Systemcertificatesalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\SystemCertificates\" 
50.
	$Outlookalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Outlook\" 
51.
	$OfficeUIalt = "\\"+$rechneralt+"\C$\Users\"+$Username+"\AppData\Local\Microsoft\Office\" 
52.
 
53.
    #*******************************************************Kopiere in folgende Pfade zu "Rechner neu"***************************************************** 
54.
	$PfadDesktopneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Desktop\" 
55.
	$Pfadfavoritesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Favorites\" 
56.
	$Pfadlinksneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\Links\" 
57.
	$Documentbuildingneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Document Building Blocks\" 
58.
	$Proofneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Proof\" 
59.
	$Signaturesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Signatures\" 
60.
	$Templatesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Templates\" 
61.
	$UProofneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\UProof\" 
62.
	$Officeneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Office\" 
63.
	$Systemcertificatesneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\SystemCertificates\" 
64.
	$Outlookneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Roaming\Microsoft\Outlook\" 
65.
	$OfficeUIneu = "\\"+$rechnerneu+"\C$\Users\"+$Username+"\AppData\Local\Microsoft\Office\" 
66.
 
67.
    # copy -------- 
68.
    Copy-Item $PfadDesktopalt $Pfaddesktopneu -Recurse 
69.
	Copy-Item $Pfadfavoritesalt $Pfadfavoritesneu -Recurse 
70.
	Copy-Item $Pfadlinksalt $Pfadlinksneu -Recurse 
71.
	Copy-Item $Documentbuildingalt $Documentbuildingneu -Recurse 
72.
	Copy-Item $Proofalt $Proofneu -Recurse 
73.
	Copy-Item $Signaturesalt $Signaturesneu -Recurse 
74.
	Copy-Item $Templatesalt $Templatesneu -Recurse 
75.
	Copy-Item $UProofalt $UProofneu -Recurse 
76.
	Copy-Item $Officealt $Officeneu -Recurse 
77.
	Copy-Item $Systemcertificatesalt $Systemcertificatesneu -Recurse 
78.
	Copy-Item $Outlookalt $Outlookneu -Recurse 
79.
	Copy-Item $OfficeUIalt $OfficeUIneu -Recurse 
80.
81.
 
82.
CopyProfile 
83.
 
84.
While ($true){ 
85.
    $Wartezeit = 0 # Benutzer muss selbst die Schaltfläche betätigen 
86.
    $Schaltfläche = 4 # Schaltfläche Ja und Nein 
87.
    $Antwort=$wPowershell.popup("Kopiervorgang abgeschlossen. Soll ein weiteres Benutzerkonto kopiert werden?",$Wartezeit,"Weiterer Kopiervorgang",$Schaltfläche)  
88.
    if ($Antwort-eq 6) { # Fall "Ja" oder "Yes" gedrückt wurde... 
89.
        CopyProfile -newPC $false 
90.
    }else{ 
91.
        exit 
92.
93.
}
Bitte warten ..
Mitglied: complex
15.09.2014 um 10:40 Uhr
Wow - dankeschön
funktioniert einwandfrei!

Muss das jetzt mal auseinandernehmen und lernen
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Batch & Shell
gelöst New-ADUser (optional Parameter) (13)

Frage von mc-doubleyou zum Thema Batch & Shell ...

Datenbanken
gelöst Row Number bei einer Abfrage sinnvoll einsetzen (1)

Frage von Aximand zum Thema Datenbanken ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...