Links zu den Foren
   
PowerShell Anwendergruppe Forum
 
  Forum   PowerShell trif...  Windows Server ...  Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch
Previous Previous
 
Next Next
New Post 11/18/2008 10:12 PM
Resolved
  TuXHunT3R
21 posts
www.der-duerst.ch.vu
7th Level Poster


Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch  (Switzerland)
Modified By TuXHunT3R  on 12/25/2008 10:42:52 PM)

Hallo ans Forum

Ich habe mein Loginscript für die Domäne ebenfalls in PowerShell geschrieben.
Jetzt bin ich dabei, meine Server auf 2008 zu migrieren und habe dabei folgendes festgestellt:

Bei einem Login auf meinem neuen 2008er Server wird das Loginscript nicht mehr ausgeführt.
Konkret habe ich den Benutzern im AD eine Batchdatei mit folgendem Inhalt als Loginscript hinterlegt:

powershell.exe -command "\\srv01\netlogon\logon.ps1"

Allerdings wird das Script dann bei einem Login auf einen 2008er Server nicht automatisch ausgeführt, er spuckt stattdessen diese Meldung aus, die man mit "M" quitieren muss, wenn das Script ausgeführt werden soll:

Führen Sie ausschließlich vertrauenswürdige Skripts aus. Skripts aus dem
Internet können zwar nützlich sein, stellen jedoch auch eine potenzielle Gefahr
 für Ihren Computer dar. Möchten Sie "\\SRV01\netlogon\logon.ps1"
ausführen?
[N] Nicht ausführen  [M] Einmal ausführen  [H] Anhalten  [?] Hilfe

 

Das Phänomen tritt nur auf dem 2008er auf, auf XP SP3, 2003 SP2 und Vista SP1 nicht.
Die Execution-Policy ist auf unrestricted.

Wie kann ich diese Sicherheitsmeldung abschalten?

PS: "srv01" ist mein 2008er Server, der als Primärer Domänencontroller fungiert.

 

Grüsse aus der Schweiz

 
New Post 11/19/2008 9:40 AM
  Rolf
197 posts
www.powershell-ag.de
1st Level Poster


Re: Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch  (Ireland)
Modified By Rolf  on 11/19/2008 7:50:14 PM)

Hallo TuXHunT3R,

welche Zone wird dir denn angezeigt, wenn du den Pfad im IE oder FileExplorer eingibst?
Funktioniert das Skript wenn du es über einen lokalen Pfad ansprichst? Also powershell.exe -command "c:\netlogon\logon.ps1".

Ich kenn es wenn die Netzwerkpfade, obwohl sie von einem DC kommen, wegen der UNC Notation als Zone Internet erkannt werden und damit dieses Verhalten auslösen.

Gruß
Rolf
Nachtrag:
Notfalls mal in den Gruppenrichtlinien nachsehen. Wenn es gar nicht klappt Signieren in Erwägung ziehen. Der Artikel in der Technet hilft eventuell weiter.
Rolf

 
New Post 11/19/2008 7:26 PM
  Rolf
197 posts
www.powershell-ag.de
1st Level Poster


Re: Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch  (N/A)

Hallo TuXHunT3R,

wir haben ja auch ein separates Forum zum Thema Login-Skript. Kannst du uns an deiner Version teilhaben lassen?
Das entsprechende Forum wäre hier:
http://www.powershell-ag.de/ps/CommunityProjekt/tabid/86/forumid/22/scope/threads/Default.aspx
Vorab schon mal ein dickes Danke!
Rolf
P.S.:
Du hast auf administrator.de ein sehr umfangreiches Skript gepostet.
http://www.administrator.de/index.php?content=a84229763fc71908205ac3076440c2b5#332699
Kannst du uns das für das für unsere Skriptsammlung zur Verfügung stellen?
Das wäre natürlich auch toll!
Rolf

 
New Post 12/23/2008 12:37 AM
  TuXHunT3R
21 posts
www.der-duerst.ch.vu
7th Level Poster


Re: Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch  (Switzerland)
Modified By TuXHunT3R  on 12/23/2008 12:52:15 AM)

Hallo Rolf

Hab mein Problem mit einer Bastellösung nun hingekriegt. Habe nun in die Batch, welche das PowerShell-Script aufruft, die folgenden Zeilen eingebaut:


if exist %temp%\logon_duerst-sool.ps1 del /f /q %temp%\logon_duerst-sool.ps1

xcopy \\srv01\netlogon\logon_duerst-sool.ps1 %temp% /h /r /y

 

Nachdem das Setzen der Gruppenrichtlinie "Skriptausführung aktivieren" unter "Computerkonfiguration", "Administrative Vorlagen", "Windows Komponenten", "Windows PowerShell" und mehrere "gpupdate /force" nichts gebracht haben und ich nicht in mühseliger Kleinarbeit jedes Pipifax-Script von mir signieren will, habe ich mich für diesen Bastel entschieden. Ist zwar nicht die feine Art, aber es funktioniert wenigstens.

Diesbezüglich verstehe ich Microsoft auch nicht. Ich stelle bei einem Programm (PowerShell) ein, dass ich diese Sicherheitsmassnahmen abstellen will (set-executionpolicy unrestricted), aber es macht es nicht vollständig. Ich weiss nicht, wie Microsoft jemals grosse Scharen von Administratoren von der PowerShell überzeugen will, wenn sie einem solche Steine in den Weg legen. Naja, genug geflucht. Ich habe noch eine andere Frage:

Ich verbinde in meinem Loginscript mit dem COM-Objekt "Wscript.Network" die Laufwerke. Das sieht dann z.B. so aus:

$Netzwerkobjekt = New-Object -comobject "WScript.Network"
write-host "Connecting Drive J:
\\srv01\public$..."
$Netzwerkobjekt.mapnetworkdrive("J:","
\\srv01\public$","False")
start-sleep -milliseconds 500
write-host "Drive J: successfully connected!" -foregroundcolor green

Irgendwie wäre es doch schon noch schön, wenn ich mittels einer Errorlevel-Abfrage abfragen könnte, ob das Verbinden des Laufwerks geklappt hat oder nicht und ich dann eine entsprechende Meldung ausgeben könnte. Ich habs bereits auf die folgende Weise probiert:

$Netzwerkobjekt.mapnetworkdrive("J:","\\srv01\public$","False")
if ($LASTEXITCODE -ne 0) {Write-Host "Error: Drive J: was not successfully connected!" -ForegroundColor red} else {write-host "Drive J: successfully connected!"}

Irgendwie haut das aber offenbar nicht richtig hin. Ich habe nämlich mal das "J:" durch "C:" ersetzt, um einen Fehler zu produzieren. Das Script gibt zwar eine riesige Fehlermeldung aus, allerdings nicht meine. Bei meiner If-Abfrage sagt er immer noch "Drive Q: successfully connected!". Weisst du gerade eine Lösung? Ansonsten greife ich wieder auf "net use" zurück, das hat wenigstens einen Errorlevel, welchen man auswerten kann........

 

Gruss aus der Schweiz

TuXHunT3R

 

Edit:

PS: Das Script, welches ich auf  administrator.de gepostet habe, kommt noch nicht mit den neuen XML-Eventlogs von Vista und 2008 Server zurecht. Sobald ich das hingebogen habe, werde ich das Script posten.

 
New Post 12/23/2008 10:00 AM
  Helmut
168 posts
1st Level Poster


Re: Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch  (Germany)
Modified By Helmut  on 12/23/2008 10:01:26 AM)

Hi TuxHunT3R,

wenn du des Laufwerkverbinden in eine Funktion einbaust, kannst du mit Hilfe von "trap" den Fehler abfangen und anschließend anhand der Variable $bolError die Meldung ausgeben ob es erfolgreich war:

function map-Drive() {
 param (
  [string]$strDrive = '',
  [string]$strShare = ''
 )
 
 if ($strDrive -eq '' -or $strShare -eq '') {
  break;
 }

 $bolError = $false;
 trap {
  Set-Variable -Name bolError -Value $true -Scope 1
  continue;
 }
 
 $Netzwerkobjekt = New-Object -comobject "WScript.Network"
 write-host "Connecting Drive $strDrive with $strShare"

 $Netzwerkobjekt.mapnetworkdrive($strDrive, $strShare, "False")

 if ($bolError -eq $false) {
  Write-Host "Drive $strDrive successfully connected!"
 }
 else {
  Write-Host "Error: Drive $strDrive was not successfully connected!" -ForegroundColor red
 }
 
}

map-Drive 'J:' "\\srv01\public$"

 

Viele Grüße

Helmut

 
Previous Previous
 
Next Next
  Forum   PowerShell trif...  Windows Server ...  Loginscript in PowerShell startet unter Server 2008 nicht mehr automatisch