admwonh
Goto Top

Powershell AD auslesen Frage

Hallo zusammen,

ich habe derzeit folgendes Problem und hoffe das mir jemand helfen kann.

Ich habe eine GUI (WPF) mit einer mehrzeiligen Textbox wo untereinander die "Samaccountname" stehen die in ein Array geschrieben werden. Das funktioniert auch soweit.
In eine weitere Textbox (die disabled ist) soll dann angezeigt werden welchen account es gibt und welchen nicht.

ich habe schon so viele Varianten getestet, im großen und ganzen geht es um den Code unten.

$enguser.Text kommt aus der GUI
$info.Text ist die Ausgabebox


    foreach ($var in $enguser.Text){	  
        
        $erg += (Get-ADuser $var | Select-Object samaccountname)
            if ($erg.samaccountname -eq ""){  
                $info.Text += 'kein ADuser vorhanden'        
            }
            else {
                $info.Text += $erg.samaccountname
            }	
    
    }

als Zusatzfrage vielleicht noch, wie kann ich das händeln wenn es einen User im AD mehrfach gibt bzw. MuellerTho und MuellerTho01? das ist am Anfang immer nicht ganz klar bei welchem wir mittlerweile sind. und ich würde erst mal nur MuellerTho eingeben was dann aber auf einen fehler laufen würde. Ich hoffe ihr versteht was ich meine?!

viele Grüße
Florian

Content-ID: 489343

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

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

emeriks
emeriks 28.08.2019 aktualisiert um 12:42:07 Uhr
Goto Top
Hi,
wie lautet denn die erste Frage?

Zweite Frage:
Was willst Du da behandeln? MuellerTho und MuellerTho01 sind zwei verschiedene Benutzer. Wo kommt es da zum Konflikt?

Und was zum Geier willst Du denn wirklich realisieren? Was willst Du am Ende wissen? Was soll herauskommen? Was soll überprüft werden?

E.
erikro
erikro 28.08.2019 um 12:48:41 Uhr
Goto Top
Moin,

Zitat von @ADMWoNh:
> 
>     foreach ($var in $enguser.Text){	  
>         
>         $erg += (Get-ADuser $var | Select-Object samaccountname)
> [...]
>         if ($erg.samaccountname -eq "")  
> 

Was macht das + da? Wenn ein User gefunden wurde, dann steht er in $erg drin. Wenn Du nun mit += die Zuweisung machst, dann bleibt der erste User auf jeden Fall drin. Also nur ein =.

Außerdem solltest Du vor der Zuweisung die Variable leeren. Denn, wenn der Befehl get-aduser schief läuft, weil es den User nicht gibt, wird die Variable nicht überschrieben. Hier mal das Ganze als Beispiel:

PS H:\> $not = @()
PS H:\> $not += get-aduser user1
PS H:\> $not.samaccountname
user1
PS H:\> $not += get-aduser user2
PS H:\> $not.samaccountname
user1
user2
PS H:\> $not += get-aduser blah
get-aduser : Unter "*****" kann kein Objekt mit der ID "blah" gefunden werden.  
In Zeile:1 Zeichen:8
+ $not = get-aduser blah
+        ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (blah:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,M
   icrosoft.ActiveDirectory.Management.Commands.GetADUser

PS H:\> $not.samaccountname
user1
user2
PS H:\> $not = ""  
PS H:\> $not.samaccountname
PS H:\> $not = get-aduser blah
get-aduser : Unter "*****" kann kein Objekt mit der ID "blah" gefunden werden.  
In Zeile:1 Zeichen:8
+ $not = get-aduser blah
+        ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (blah:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,M
   icrosoft.ActiveDirectory.Management.Commands.GetADUser

PS H:\> $not.samaccountname
PS H:\> $not = get-aduser user1
PS H:\> $not.samaccountname
user1
PS H:\> $not = get-aduser user2
PS H:\> $not.samaccountname
user2
PS H:\> $not = get-aduser blah
get-aduser : Unter "*****" kann kein Objekt mit der ID "blah" gefunden werden.  
In Zeile:1 Zeichen:8
+ $not = get-aduser blah
+        ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (blah:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,M
   icrosoft.ActiveDirectory.Management.Commands.GetADUser

PS H:\> $not.samaccountname
user2
PS H:\> $not =""  
PS H:\> $not = get-aduser blah
get-aduser : Unter "*****" kann kein Objekt mit der ID "blah" gefunden werden.  
In Zeile:1 Zeichen:8
+ $not = get-aduser blah
+        ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (blah:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,M
   icrosoft.ActiveDirectory.Management.Commands.GetADUser

PS H:\> $not.samaccountname
PS H:\>

Hier dann der korrigierte Code:

 
     foreach ($var in $enguser.Text){
          $erg=""  
          $erg = (Get-ADuser $var | Select-Object samaccountname)
             if ($erg.samaccountname -eq ""){  
                 $info.Text += 'kein ADuser vorhanden'        
             }
             else {
                 $info.Text += $erg.samaccountname
             }	
     
     }
 
 

hth

Erik
ADMWoNh
ADMWoNh 28.08.2019 aktualisiert um 13:38:14 Uhr
Goto Top
Danke Erik,

so in der Art hatte ich das auch schon probiert, erhalte aber folgenden Fehler:

Get-ADuser : Unter "Meine Firma" kann kein Objekt mit der ID "User1  
User2" gefunden werden.  
In C:\Datei.ps1:73 Zeichen:19
+           $erg = (Get-ADuser $var | Select-Object samaccountname)
+                   ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (User1
User2:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Micros 
   oft.ActiveDirectory.Management.Commands.GetADUser
scheinbar werden die nicht einzeln behandelt, sondern User1User2 zusammengefügt. (ich habe natürlich vorhandene User genommen face-smile )


Das Kernziel ist ein kleines Tool zum einrichten vom Mailadressen, Verteilern und smbx damit die Kollegen sich nicht immer den Powershell Code zurechtbastelln müssen.


2019-08-28 13_32_44


VG
Florian
emeriks
emeriks 28.08.2019 aktualisiert um 13:41:00 Uhr
Goto Top
Na, Du musst den Inhalt der Textbox schon in einzelne Elemente zerlegen, entweder nach Zeilen oder nach anderem Trennzeichen.
foreach ($var in $enguser.Text.Split(",")){  
....
foreach ($var in ($enguser.Text) -split "`n"){  
....
oder so ähnlich.
ADMWoNh
ADMWoNh 28.08.2019 aktualisiert um 14:27:40 Uhr
Goto Top
hmmm komisch.

es wird immer nur der letzte User erkannt. Die Ersten nicht.
1. kann kein Objekt mit der ID "User1" gefunden werden
2. kann kein Objekt mit der ID "User2" gefunden werden
3. OK

Wie kann ich die Daten aus der Textbox denn als Array speichern? denn obwohl es alle Daten inne hat ist es kein Array.
$enguser.Text -is [array]
False

fällt Dir dazu etwas ein?

offensichtlich habe ich zum Thema Daten einlesen und verarbeiten heute echt ein Brett vor dem Kopf... Sorry
erikro
erikro 28.08.2019 um 15:02:52 Uhr
Goto Top
Moin,

Zitat von @ADMWoNh:
Wie kann ich die Daten aus der Textbox denn als Array speichern? denn obwohl es alle Daten inne hat ist es kein Array.
> $enguser.Text -is [array]
> False
> 

Wie der Kollege @emeriks schon sagte, wird wohl in Deiner Variablen kein Array, sondern ein String stehen, der erst aufgesplittet werden muss. Hilfreich wäre hier, wenn Du uns nicht nur Fragmente Deines Skripts, sondern das ganze posten könntest. Wir wissen so nämlich nicht, was denn in $enguser so drinsteht. Ansonsten wird das so in ein Array umgewandelt:

$array_from_string = $string.split("[Trennzeichen]")  

Dabei wird das Trennzeichen gelöscht. Also wenn die Daten z. B. so vorliegen:

$string = "user1,user2,user3"  

Dann wäre der Split so:

$array = $string.split(",")  

Aufgepasst! Häufig muss man die Daten dann auch noch trimmen, um ungewünschte Leerzeichen oder Zeilenumbrüche am Ende des Datums zu entfernen.

hth

Erik
emeriks
emeriks 28.08.2019 um 20:19:30 Uhr
Goto Top
$enguser wird wohl die Textbox sein
ADMWoNh
ADMWoNh 29.08.2019 um 07:25:51 Uhr
Goto Top
Hier einmal wie es aus der Textbox kommt:
$enguser.Text
user1
user2
user3

$enguser.Text -is [array]
False
Dann der Splitt um es in ein array umzuwandeln
$erg = $enguser.text.split()

$erg
user1

user2

user3

$erg -is [array]
True
sieht ja erst mal alles gut aus, aber trotzdem funktioniert nur der letzte user in der Liste. Bei allen davor bekomme ich folgenden fehler:
user1
Get-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Die Identitätseigenschaft des Arguments ist NULL oder leer.  
In C:\Users\Fiedlerflo\Documents\Maileinrichten2808.ps1:72 Zeichen:32
+           Get-ADuser -identity $user
+                                ~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 

user2
Get-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Die Identitätseigenschaft des Arguments ist NULL oder leer.  
In C:\Users\Fiedlerflo\Documents\Maileinrichten2808.ps1:72 Zeichen:32
+           Get-ADuser -identity $user
+                                ~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 

user3

PS C:\WINDOWS\system32> $enguser


TextWrapping                        : Wrap
MinLines                            : 1
MaxLines                            : 2147483647
Text                                : user1
                                      user2
                                      user3
CharacterCasing                     : Normal
MaxLength                           : 0
TextAlignment                       : Left
SelectedText                        : 
SelectionLength                     : 0
SelectionStart                      : 22
CaretIndex                          : 22
LineCount                           : 2
TextDecorations                     : {}
Typography                          : System.Windows.Documents.Typography
IsReadOnly                          : False
IsReadOnlyCaretVisible              : False
AcceptsReturn                       : True
AcceptsTab                          : False
SpellCheck                          : System.Windows.Controls.SpellCheck
HorizontalScrollBarVisibility       : Disabled
VerticalScrollBarVisibility         : Hidden
ExtentWidth                         : 54,4866666666667
ExtentHeight                        : 31,92
ViewportWidth                       : 348
ViewportHeight                      : 159
HorizontalOffset                    : 0
VerticalOffset                      : 0
CanUndo                             : True
CanRedo                             : False
IsUndoEnabled                       : True
UndoLimit                           : 100
AutoWordSelection                   : False
SelectionBrush                      : #FF0078D7
SelectionTextBrush                  : #FFFFFFFF
SelectionOpacity                    : 0,4
CaretBrush                          : 
IsSelectionActive                   : False
IsInactiveSelectionHighlightEnabled : False
BorderBrush                         : #FFABADB3
BorderThickness                     : 1,1,1,1
Background                          : #FFFFFFFF
Foreground                          : #FF000000
FontFamily                          : Segoe UI
FontSize                            : 12
FontStretch                         : Normal
FontStyle                           : Normal
FontWeight                          : Normal
HorizontalContentAlignment          : Left
VerticalContentAlignment            : Top
TabIndex                            : 2147483647
IsTabStop                           : True
Padding                             : 0,0,0,0
Template                            : System.Windows.Controls.ControlTemplate
Style                               : 
OverridesDefaultStyle               : False
UseLayoutRounding                   : False
Triggers                            : {}
TemplatedParent                     : 
Resources                           : {}
DataContext                         : 
BindingGroup                        : 
Language                            : en-us
Name                                : enguser
Tag                                 : 
InputScope                          : 
ActualWidth                         : 354
ActualHeight                        : 161
LayoutTransform                     : Identity
Width                               : 354
MinWidth                            : 0
MaxWidth                            : ∞
Height                              : 161
MinHeight                           : 0
MaxHeight                           : ∞
FlowDirection                       : LeftToRight
Margin                              : 10,34,0,0
HorizontalAlignment                 : Left
VerticalAlignment                   : Top
FocusVisualStyle                    : 
Cursor                              : 
ForceCursor                         : False
IsInitialized                       : True
IsLoaded                            : True
ToolTip                             : 
ContextMenu                         : 
Parent                              : System.Windows.Controls.Grid
HasAnimatedProperties               : False
InputBindings                       : {}
CommandBindings                     : {}
AllowDrop                           : True
DesiredSize                         : 364;195
IsMeasureValid                      : True
IsArrangeValid                      : True
RenderSize                          : 354;161
RenderTransform                     : Identity
RenderTransformOrigin               : 0;0
IsMouseDirectlyOver                 : False
IsMouseOver                         : False
IsStylusOver                        : False
IsKeyboardFocusWithin               : False
IsMouseCaptured                     : False
IsMouseCaptureWithin                : False
IsStylusDirectlyOver                : False
IsStylusCaptured                    : False
IsStylusCaptureWithin               : False
IsKeyboardFocused                   : False
IsInputMethodEnabled                : True
Opacity                             : 1
OpacityMask                         : 
BitmapEffect                        : 
Effect                              : 
BitmapEffectInput                   : 
CacheMode                           : 
Uid                                 : 
Visibility                          : Visible
ClipToBounds                        : False
Clip                                : 
SnapsToDevicePixels                 : False
IsFocused                           : False
IsEnabled                           : True
IsHitTestVisible                    : True
IsVisible                           : False
Focusable                           : True
PersistId                           : 6
IsManipulationEnabled               : False
AreAnyTouchesOver                   : False
AreAnyTouchesDirectlyOver           : False
AreAnyTouchesCapturedWithin         : False
AreAnyTouchesCaptured               : False
TouchesCaptured                     : {}
TouchesCapturedWithin               : {}
TouchesOver                         : {}
TouchesDirectlyOver                 : {}
DependencyObjectType                : System.Windows.DependencyObjectType
IsSealed                            : False
Dispatcher                          : System.Windows.Threading.Dispatcher

noch eine Idee ?
erikro
erikro 29.08.2019 um 08:42:37 Uhr
Goto Top
Moin,
Zitat von @ADMWoNh:

Hier einmal wie es aus der Textbox kommt:
> $enguser.Text
> user1
> user2
> user3
> 
> $enguser.Text -is [array]
> False
> 
Dann der Splitt um es in ein array umzuwandeln
> $erg = $enguser.text.split()
> 
> $erg
> user1
> 
> user2
> 
> user3
> 
> $erg -is [array]
> True
> 

Ja und das Array hat ein Element, in dem die drei Usernamen mit Zeilenumbruch dazwischen stehen. Du musst der PS schon sagen, an welchem Zeichen sie splitten soll.

$erg = $erguser.text.split("`n")  

hth

Erik

P. S.: Dass die PS da aber auch keine Fehlermeldung auswirft. Sowas wie "zu wenig Argumente für SPLIT()" ...
emeriks
emeriks 29.08.2019 um 21:04:43 Uhr
Goto Top
Zitat von @ADMWoNh:
noch eine Idee ?
Ja, nicht bloß Fetzen liefern!
Jetzt ist es plötzlich Variable "$user". Gestern war es noch "$erg.samaccountname". Morgen ist es "$sonstwas".
Vollständiger Code-Block --> Aussicht auf zielgerichtete Hilfe
ADMWoNh
ADMWoNh 02.09.2019 um 11:49:03 Uhr
Goto Top
ok Sorry,
hier mal soweit den Code den ich habe.

[xml]$XAML = @'  
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
        Title="Mail einrichtungserleichterer" Height="478.234" Width="778.483">      
        <TabControl HorizontalAlignment="Left" Height="452" Margin="-3,0,-3,-3.333" VerticalAlignment="Top" Width="778">  
        <TabItem Header="Exchange/AD" Height="22" Margin="-2,-2,-2.333,0" VerticalAlignment="Top">  
            <Grid Background="#FFE5E5E5" Margin="0,-1,0,1">  
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="129*"/>  
                    <ColumnDefinition Width="644*"/>  
                </Grid.ColumnDefinitions>

                <Button x:Name="btneinrichten" Content="Einrichten" HorizontalAlignment="Left" Margin="120.333,321,0,0" VerticalAlignment="Top" Width="75" Grid.Column="1" Height="20"/>  
                <TextBox x:Name="enguser" AcceptsReturn="true" HorizontalAlignment="Left" Height="161" Margin="10,34,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="354" Grid.ColumnSpan="2"/>  
                <TextBlock x:Name="txtuser" HorizontalAlignment="Left" Margin="26,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2" Width="110"><Run Text="User"/><Run Text=" / Verteiler"/><Run Text=" / "/></TextBlock>  
                <TextBox x:Name="info" Grid.Column="1" HorizontalAlignment="Left" Height="161" Margin="328.333,34,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="257" IsEnabled="False"/>  
                <TextBlock x:Name="txtinfo" Grid.Column="1" HorizontalAlignment="Left" Margin="339.333,10,0,0" TextWrapping="WrapWithOverflow" Text="Infomonitor" VerticalAlignment="Top" Width="156"/>  
                <CheckBox x:Name="chkpostfach" Content="Postfach einrichten" HorizontalAlignment="Left" Margin="43,227,0,0" VerticalAlignment="Top" Grid.ColumnSpan="2"/>  
                <CheckBox x:Name="chkverteiler" Content="Verteiler" Grid.Column="1" HorizontalAlignment="Left" Margin="47.333,227,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.391,0.6"/>  
                <CheckBox x:Name="chksmbx" Content="SMBX" Grid.Column="1" HorizontalAlignment="Left" Margin="144.333,227,0,0" VerticalAlignment="Top"/>  
                <Button x:Name="btnlizenz" Content="User Lizenz Check" HorizontalAlignment="Left" Margin="67,321,0,0" VerticalAlignment="Top" Width="112" Grid.ColumnSpan="2"/>  
                <CheckBox x:Name="chkintern" Content="Intern" Grid.Column="1" HorizontalAlignment="Left" Margin="47.333,256,0,0" VerticalAlignment="Top"/>  
                <CheckBox x:Name="chkextern" Content="Extern" Grid.Column="1" HorizontalAlignment="Left" Margin="47.333,276,0,0" VerticalAlignment="Top"/>  
                <CheckBox x:Name="chkpostfachdelete" Content="Postfach loeschen" HorizontalAlignment="Left" Margin="43,280,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.645,2.266" Height="36" Width="121" Grid.ColumnSpan="2"/>  

            </Grid>

        </TabItem>
        <TabItem Header="O365 Exchange">  
            <Grid Background="#FFE5E5E5"/>  
        </TabItem>
    </TabControl>
</Window>
'@  
#Read XAML
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
try{$Window=[Windows.Markup.XamlReader]::Load(  $reader )}
catch{Write-Host "Unable to load Windows.Markup.XamlReader. Some possible causes for this problem include: .NET Framework is missing PowerShell must be launched with PowerShell -sta, invalid XAML code was encountered."; exit}  

#===========================================================================
# Store Form Objects In PowerShell
#===========================================================================
$xaml.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]")  | ForEach {  

  New-Variable  -Name $_.Name -Value $Window.FindName($_.Name) -Force

  } 
  New-Variable -Name erg -Option AllScope
 New-Variable -Name userok -Option AllScope

	$chkintern.IsEnabled = $false
	$chkextern.IsEnabled = $false
    



###
### Eventhandler folgen ab hier
###




$btnlizenz.Add_click({
$erg = $erg + "`n"  
Out-File -FilePath "C:\User\User1.txt" -InputObject $erg -Encoding ASCII  

$erg = $enguser.split("`n")  

      foreach ($user in $enguser){
          $user -replace "`n|`r"  
          Get-ADuser -identity $user
          Write-Host $user
            # if ($users.samaccountname -eq ""){ 
            #     $info.Text += 'kein ADuser vorhanden'       
            # }
            # else {
            #     $info.Text += $users + "`n" 
            # }	
     
     }
 
  

 
})


$chkpostfachdelete.Add_click({
if ($chksmbx.IsChecked -eq $true){
	$chksmbx.IsChecked = $false
}

})


$chksmbx.Add_click({
if ($chkpostfach.IsChecked -eq $true -or $chkverteiler.IsChecked -eq $true -or $chkpostfachdelete.IsChecked -eq $true){
	$chkverteiler.IsChecked = $false
    $chkpostfachdelete.IsChecked = $false
	$chkintern.IsEnabled = $false
	$chkextern.IsEnabled = $false
	$chkintern.isChecked = $false
	$chkextern.isChecked = $false
	$chkpostfach.IsChecked = $false
    
}
else {
	
    $chkpostfachdelete.IsEnabled = $true
}

})

$chkpostfach.Add_Click({
if ($chkpostfach.IsChecked -eq $true -or $chksmbx.IsChecked -eq $true){
	$chksmbx.IsChecked = $false
	$chkverteiler.IsChecked = $false
	$chkintern.IsEnabled = $false
	$chkextern.IsEnabled = $false
	$chkintern.isChecked = $false
	$chkextern.isChecked = $false
    $chkpostfachdelete.IsChecked = $false
    $chkpostfachdelete.IsEnabled = $false
   
}
else {
    $chkpostfachdelete.IsEnabled = $true
}
})




$chkverteiler.Add_click({
if ($chkverteiler.IsChecked -eq $true -or $chksmbx.IsChecked -eq $true){
	$chksmbx.IsChecked = $false
	$chkpostfach.IsChecked = $false
    $chkpostfachdelete.IsChecked = $false
    $chkpostfachdelete.IsEnabled = $false
	$chkintern.IsEnabled = $true
	$chkextern.IsEnabled = $true
}
else {
	$chkintern.IsEnabled = $false
	$chkextern.IsEnabled = $false
	$chkintern.isChecked = $false
	$chkextern.isChecked = $false
    $chkpostfachdelete.IsEnabled = $true
}
})


$chkintern.Add_click({	
	intern
})

$chkextern.Add_click({	
	extern
})

$btneinrichten.Add_click({	
	einrichten
})


###
### Funktionen folgen ab hier
###


function einrichten{

if ($chkpostfach.IsChecked -eq $true -or $chksmbx.IsChecked -eq $true)
{
    if ($chkpostfach.IsChecked -eq $true){
        postfach
        e3
    }
    else {
        postfach
    }

}




} #function ende

function postfach{



}

function e3{

}

function intern{
if ($chkintern.IsChecked -eq $true){
		$chkextern.isChecked = $false
	}
}

function extern{
if ($chkextern.IsChecked -eq $true){
		$chkintern.isChecked = $false
	}
}
  $Window.ShowDialog() | out-null

Ziel soll es sein, ich gebe in der Maske in die Textbox die Samaccountname untereinander ein und diese sollen zuerst auf vorhanden sein geprüft werden.
Danach möchte ich für jeden User ein Postfach anlegen. Das hat den Hintergrund, dass wir täglich 5+ neue User haben die eine Adresse bekommen.

Also soll jeder User aus der Textbox in ein Array damit ich die dann weiter verarbeiten kann, aber das haut irgendwie nicht hin.

(Der Code ist so natürlich noch nicht komplett, also nicht wundern wenn irgendwo unsinnige Sachen stehen.) face-smile

Gruß Flo
emeriks
emeriks 02.09.2019 um 17:48:15 Uhr
Goto Top
Zeilen 70 und 72!
Das Array landet im $erg. Also musst Du dieses auch beim Foreach benutzen.
erikro
erikro 03.09.2019 um 09:12:40 Uhr
Goto Top
Moin,

ich dachte, ich hätte das hier schon erwähnt. War wohl ein anderer Thread.

Zitat von @emeriks:

Zeilen 70 und 72!
Das Array landet im $erg. Also musst Du dieses auch beim Foreach benutzen.

Solche Inkonsistenzen in der Benennung der Variablen kann man mit einem einfachen

set-psdebug -strict

sehr leicht erkennen. Dann läuft das Skript nämlich nicht einfach durch und das foreach wird dabei nicht abgearbeitet (das Array ist ja nicht vorhanden), sondern es wird angehalten und eine Fehlermeldung ausgeworfen, die besagt, dass man eine nicht vorhandene Variable benutzen will.

hth

Erik