Quantcast
Channel: Windows PowerShell Forum
Viewing all 2314 articles
Browse latest View live

FRAGE: Powershell GUI Auswahl aus Explorer und Übergabe des Wertes an ein Label Feld

$
0
0

Hallo Powershell Forum,

ich mache gerade meine ersten Gehversuche eine GUI in Powershell zu erstellen. Ich möchte in dem beigefügtem Script eine CSV-Datei aus dem Explorer auswählen und in ein Labelfeld schreiben. Diese Variable möchte ich später weiterverwenden. Die Oberfläche konnte ich umsetzten. Ebenso den Explorer Aufruf. Jedoch weiß ich nicht wie ich den Dateinamen mit Pfad in das Label Feld schreibe.

Kann mich hierbei jemand unterstützen?

    
Add-Type -AssemblyName System.Drawing


# -----------------------------------------------------------------------------------------
# Function
# -----------------------------------------------------------------------------------------


    Function fun_import_csv_path ()    {        $import_csv_path = New-Object System.Windows.Forms.OpenFileDialog -Property @{        InitialDirectory = [Environment]::GetFolderPath('Desktop')        Filter = 'SpreadSheet (*.xlsx)|*.xlsx'        }    $null = $import_csv_path.ShowDialog()    $import_csv = $import_csv_path.FileName    write-host $import_csv    return $import_csv    }


# -----------------------------------------------------------------------------------------
# Generate Formular
# -----------------------------------------------------------------------------------------
Function Generate-Form {
       <#    Generate Formular    #>    $Form = New-Object system.Windows.Forms.Form    $Form.Size = '640,270'    $Form.text = "Test Formular"    $Form.TopMost  = $false


# -----------------------------------------------------------------------------------------
# Add import-csv Textbox
# -----------------------------------------------------------------------------------------
    $txt_import_csv_file             = New-Object system.Windows.Forms.TextBox    $txt_import_csv_file.multiline   = $false    $txt_import_csv_file.text        = "Import CSV:"    $txt_import_csv_file.width       = 150    $txt_import_csv_file.height      = 20    $txt_import_csv_file.location    = New-Object System.Drawing.Point(20,80)    $txt_import_csv_file.Font        = 'Courier New,10'    $Form.Controls.Add($txt_import_csv_file)

# -----------------------------------------------------------------------------------------
# Add import-csv Label
# -----------------------------------------------------------------------------------------
    $lbl_import_csv                  = New-Object system.Windows.Forms.Label    $lbl_import_csv.text             = "C:\temp\test.csv"    $lbl_import_csv.BackColor        = "#ffffff"    $lbl_import_csv.AutoSize         = $false    $lbl_import_csv.width            = 300    $lbl_import_csv.height           = 20    $lbl_import_csv.location         = New-Object System.Drawing.Point(200,80)    $lbl_import_csv.Font             = 'Courier New,10'    $Form.Controls.Add($lbl_import_csv)


# -----------------------------------------------------------------------------------------
# Add import-csv Button
# -----------------------------------------------------------------------------------------
    $but_import_csv                  = New-Object system.Windows.Forms.Button    $but_import_csv.BackColor        = "#ffffff"    $but_import_csv.text             = "Select"    $but_import_csv.width            = 80    $but_import_csv.height           = 20    $but_import_csv.location         = New-Object System.Drawing.Point(530,80)    $but_import_csv.Font             = 'Courier New,10,style=Bold,Underline'    $but_import_csv.ForeColor        = "#000000"    $Form.Controls.Add($but_import_csv)    $but_import_csv.add_MouseClick({$txt_import_csv_file = fun_import_csv_path})


# -----------------------------------------------------------------------------------------
# Main
# -----------------------------------------------------------------------------------------

         #Show the Form     $form.ShowDialog()| Out-Null  } #End Function  #Call the Function 
Generate-Form



Sonnenauf- und Untergang in Powershell

$
0
0

Hallo in die Runde,

ich bin hier vermutlich ein wenig OT aber ich kämpfe schon eine Weile mit diesem Problem...

für ein kleines "Homeprojekt" möchte ich per Powershell die Jalousien rauf und runterfahren, sobald die Sonne auf- bzw. untergegangen ist.

Gebe ich bei Google in der Suche "Sonnenaufgang Berlin" ein, erhalte ich die Uhrzeit der voraussichtlichen Sonnenaufgangs - allerdings nur als Preview in der Suchergebnisliste und ohne einen Link welchen man direkt benutzen könnte.

Ich möchte jetzt nicht den gesamten HTML Code nach den richtigen Daten durchsuchen und suche nach einer kurzen und einfachen Lösung, die Sonnen Auf- bzw. Untergangszeiten per Powershell abzufragen - muss auch nicht google sein - bin für alles offen...

Hat jemand eine Idee?

Vielen Dank

Liebe Grüße

Martin

Umlaute in Powershell für linux

$
0
0

Hallo,

ich mir ein Script geschrieben, welches auf meinen Ubuntu Server ein externes Programm aufruft und verschiedene Dateien aufruft.

Wenn ich das Programm als Script ganz normal aufrufe, habe ich keine Probleme.

Wenn ich es allerdings in einem Crontab aufrufe, kommt es zum Fehler bei den deutschen Umlauten. Mir ist da nicht ganz klar, worin der Unterschied bestehen kann, wenn ich das Script per Linecommand aufrufe oder als Cronjob.

Weiß jemand, woran das liegen kann?

Beste Grüße,

Michael Bosch

Dynamische Checkbox(en) erzeugen

$
0
0

Hallo,

ich möchte Checkboxen dynamisch generieren.

Habe ein paar Beispiele gefunden und getestet. Die folgende Lösung gefällt mir eigentlich ganz

gut und damit könnte ich arbeiten:

functionGenerateForm{
    param([string[]]$CheckBoxLabels)# Rest of code goes here ...}

# Keep track of number of checkboxes $CheckBoxCounter =1# When we create a new textbox, we add it to an array for easy reference later $CheckBoxes = foreach($Label in $CheckBoxLabels){ $CheckBox =New-ObjectSystem.Windows.Forms.CheckBox $CheckBox.UseVisualStyleBackColor= $True $System_Drawing_Size =New-ObjectSystem.Drawing.Size $System_Drawing_Size.Width=104 $System_Drawing_Size.Height=24 $CheckBox.Size= $System_Drawing_Size $CheckBox.TabIndex=2# Assign text based on the input $CheckBox.Text= $Label $System_Drawing_Point =New-ObjectSystem.Drawing.Point $System_Drawing_Point.X =27# Make sure to vertically space them dynamically, counter comes in handy $System_Drawing_Point.Y =13+(($CheckBoxCounter -1)*31) $CheckBox.Location= $System_Drawing_Point $CheckBox.DataBindings.DefaultDataSourceUpdateMode=0# Give it a unique name based on our counter $CheckBox.Name="CheckBox$CheckBoxCounter"# Add it to the form $form1.Controls.Add($CheckBox)# return object ref to array $CheckBox# increment our counter $CheckBoxCounter++}

$handler_button1_Click={
    $listBox1.Items.Clear();# Keep track of whether something has been added to the list
    $ContentPresent = $false# Iterate over the checkboxes, one by one
    foreach($CheckBox in $CheckBoxes){if($CheckBox.Checked){
            $listBox1.Items.Add("{0} (with value ""{1}"") has been checked"-f ($CheckBox.Name,$CheckBox.Text))
            $ContentPresent = $True}}# If something was already added to the list, no need to show default messageif(-not $ContentPresent){ $listBox1.Items.Add("No CheckBox selected....")}

Ich habe das Ganze auf meine Bedürfnisse angepasst und bin soweit zufrieden damit.

Allerdings verstehe ich irgendwie das "Button click handling" hier nicht. In dem Beispiel hier werden die Ergebnisse

der gecheckten Checkboxen an "$listBox1" übergeben. Wenn ich hier in der foreach-Schleife $Checkbox abfrage, erhalte

ich den CheckState der eben auf 0 oder 1 gesetzt ist. Wie kann ich hier die Werte für CheckBoxLabels wieder abfragen,

die ich mit GenerateForm -CheckBoxLabels Hund,Katze,Maus übergeben habe, um diese wieder in einer Variable zu

speichern und um zu wissen, was nun letztendlich ausgewählt wurde? In dem Beispiel geschieht das wohl über

Items.Add. Statt der foreach-Schleife wäre mir eine Abfrage wie if (Checkbox1.checked) lieber. Habe aber leider gerade

so keine Idee, wie ich es lösen kann. Wäre jemand bitte so nett, mich da mal gerade mit Ideen, Tipps und Vorschlägen

zu unterstützen? Bin auch für komplett andere Ansätze offen, wie man dynamische Checkboxen erstellen kann.

Das hier aufgeführte Beispiel war für mich bisher nur weitestgehens am verständlichsten.

Vielen Dank.

Gruß

Christian


Nach Erstellung einer *.exe mit ps2exe keine highlighted buttons

$
0
0

Hallo,

ich habe ein Skript mit Buttons und Progressbar das ich Mittels ps2exe in eine *.exe konvertiere.

Nach der Erstellung der *.exe "highlighten" die Buttons nicht und die Progressbar sieht auch anders aus.

So sieht es beim Ausführen des Skriptes aus:

So nach dem konvertieren:

Liegt das an dem ps2exe Tool, oder kann ich das irgendwie ändern?

Jemand Erfahrungen damit oder eine Idee?

Vielen Dank.

Gruß Christian

Get-EventLog instanceID Property wird nicht korrekt angzeigt?

$
0
0

hallo zusammen

ich wollte nach -instanceID "2041" oder sonstwas filtern und bin auch auf ein komisches Verhalten gestossen.

in der GUI gibt es jede Menge vierstellige EventIDs .

Get-EventLog -LogName "Directory Service" | fl

zeigt keine korrekt InstanceID. Gibt es so wie bei anderen cmdlets -Properties noch eine Möglichkeit alle Objekte korrekt anzuzeigen?


Source             : NTDS LDAP
TimeGenerated      : 23.02.2020 18:12:39
TimeWritten        : 23.02.2020 18:12:39
UserName           : NT AUTHORITY\ANONYMOUS LOGON

Index              : 58260
EntryType          : Information
InstanceId         : 1073744713
Message            : The following client performed a SASL (Negotiate/Kerberos/NTLM/Digest) LDAP bind without requesting
                     signing (integrity verification), or performed a simple bind over a clear text (non-SSL/TLS-encrypted)
                     LDAP connection.
                    

mit where funktioniert es, obwohl das Properties mittels | fl nicht angezeigt wird?

| Where-Object { $_.EventID -eq 2889 }


Chris


Terminalserver Profile

$
0
0

Hallo!

ich möchte gern in einer TS Farm User löschen. 

Ich könnte ja per per 

Get-WMIObject -computername $computer-class Win32_UserProfile

das entsprechende Profil filtern und dann per pipe löschen.

Hier wird doch nur der Eintrag in der Registry gelöscht? 

Oder?

Gruß

Norbert

Funktionsergebnis in Listbox anzeigen lassen

$
0
0

Hallo zusammen,

ich komme aktuell mit meinem PowerShell Skript nicht weiter und bräuchte ein wenig Unterstützung. Mein Ziel ist es mit dem Skript die aktiven Netzwerkadapter und deren Eigenschaften in einer GUI anzeigen zu lassen. Die Anzeige der Netzwerkadapter klappt mit folgender Funktion:

Function Get-Netzwerkadapter
{
$_connected_network_adapter = get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, interfaceindex, netconnectionstatus, adaptertype, speed
$_default_routing = get-wmiobject win32_ip4routetable | ? {$_.Destination -eq "0.0.0.0"}
foreach ($entry in $_connected_network_adapter){
	foreach ($entry1 in $_default_routing){ 
		If ($entry.interfaceindex -eq $entry1.interfaceindex){
                netsh interface ip show config $entry.netconnectionid > C:\Temp\Info.csv
			} 
		} 
	}
}

Hier exportiere ich die ausgelesenen Daten in eine csv Datei. Die CSV Datei wird korrekt erzeugt, hat keine Header und wird einspaltig dargestellt.

Ich importiere dann die CSV Datei mit

$data = Import-Csv -Header " " -Path "C:\Temp\Info.csv"

Und gebe diese in einer Listbox wieder aus

	#ListBox Netzwerkinformationen
	$ListBoxNetwork = New-Object System.Windows.Forms.ListBox
	$ListBoxNetwork.Location = New-Object System.Drawing.Point(10,10)
	$ListBoxNetwork.Size = New-Object System.Drawing.Size(600,370)
	$ListBoxNetwork.Items.AddRange($data)
	$TabNetwork.Controls.Add($ListBoxNetwork)
	$ListBoxNetwork.add_SelectedIndexChanged($SelectedFile)

Die Ausgabe klappt auch, allerdings ist die Darstellung mehr als Bescheiden.

@{ =TEXT1}

@{ =TEXT2}

@{ =TEXT3}

Hat jemand eine Idee, wie ich eine saubere Darstellung in der GUI realisieren kann? Ich könnte mir auch vorstellen den Export und den Import in eine CSV komplett zu umgehen, wenn man die Funktion direkt ausgeben kann, habe dafür aber bisher keine Lösung gefunden.

Danke schon einmal im Voraus


Powershell PackageFullName einer App als Variable speichern

$
0
0

Hallo Leute

Ich suche eine Möglichkeit den PackageFullName einer App z.B. StickyNotes abzufragen und in eine Variable zu speichern, welche dann zum Installieren der App benutzt werden kann.

heisst:

Wenn StickyNotes oder der Rechner nach dem Bereinigen nicht mehr für den User installiert sind, möchte ich diese nachinstallieren. Beim Versuch dies mit z.B. diesem Befehl zu machen, habe ich festgestellt, dass das nicht immer sauber funktioniert.

Add-AppxPackage-register"C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_*\appxmanifest.xml"-DisableDevelopmentMode

Verwende ich allerdings den gleichen Befehl noch mit der Version dran (Beispiel StickyNotes)

Add-AppxPackage-register"C:\Program Files\WindowsApps\Microsoft.MicrosoftStickyNotes_3.1.46.0_x64*\appxmanifest.xml"-DisableDevelopmentMode

funktioniert es wunderbar.

Da ich nun aber die Version nicht immer genau kenne, wollte ich die Version zuerst auslesen und dann installieren.

Das nun halt eben automatisch in einem PowerShell script.

Kann mir da jemand helfen. Ich hab noch keine Ahnung wie man mit Variablen umgeht oder wie ich das machen könnte.

Herzlichen Dank

Trix

Constrained Endpoint für Everyone verfügbar machen

$
0
0

Hallo zusammen,

ich habe aktuell ein Problem für das ich die Ursache nicht finden kann.

Ich möchte auf einem Domain Server einen Constrained Endpoint bereitstellen.

New-PSSessionConfigurationFile -Path $Path -RunAsVirtualAccount -SessionType RestrictedRemoteServer -LanguageMode NoLanguage -ExecutionPolicy Restricted -FunctionDefinitions $GetStats -VisibleCmdlets get-help

Dieser soll für Everyone die benannte Funktion bereitstellen. Hintergrund ist, dass ich von Standalone Maschinen aus auf diesen Server connecten will, um Read Only ein paar Daten abzuholen.

Auf der Standalone Maschine habe ich den Domain Server zu den Trusted Hosts hinzugefügt und bin mit lokalem Admin angemeldet.

Dann versuche ich aus der Session herraus auf den Endpoint zuzugreifen:

New-PSsession -ComputerName $Servername -ConfigurationName $EndpointName

Hier bekomme ich folgende Fehlermeldung:

Connecting to remote server failed with the following error message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException+ FullyQualifiedErrorId : PSSessionOpenFailed

Der Endpoint enthält in der ACL Full Control (All Operations) für Everyone. Ich war der Meinung, dass ich nun unauthentifiziert diesen Endpoint nutzen kann. Fehlt mir hier ein Teil? Hat jemand einen Tipp für mich?

Vorab schonmal vielen Dank für die Hinweise.

Liebe Grüße

Property * vs. AD Attribute

$
0
0

moin,

ich dachte immer man sieht im AD unter AttributEditor alle Attribute die es zu einem Objekt gibt.

wenn ich jedoch mittels Powershell

get-adcomputer -properties * 

abfrage erhalte ich auch eine IP4 Adresse die ich im AD Benutzer u. Computer Verwaltung unter Attribute nicht sehe?


Chris


Mehrere Abfragen zu einem Add-Content zusammenfassen

$
0
0
$env:computername | Add-Content \\server\TreiberProbleme.txt
Get-ComputerInfo | Select OsLocalDateTime | Add-Content \\server\TreiberProbleme.txt
Get-ComputerInfo | Select CsManufacturer, CsSystemFamily, CsModel | Add-Content \\server\TreiberProbleme.txt
Get-ComputerInfo | Select WindowsProductName, WindowsVersion, OSVersion | Add-Content \\server\TreiberProbleme.txt
gwmi cim_LogicalDevice | ? {$PSItem.Status -eq 'Error'} | Select Name, Status | Add-Content \\server\TreiberProbleme.txt

Hiho, wisst Ihr evtl. wie ich meinen Code zu EINEM Add-Content zusammenfügen könnte? Das heißt, dass zuerst alles abgefragt wird und erst am Ende EIN Add-Content steht. Hintergrund ist der, dass die txt immer die richtige Reihenfolge beibehalten soll auch wenn das Skript auf 2 Rechnern gleichzeitig läuft.

Danke 



Add-Content in Textdokument ganz oben einfügen

$
0
0

Gibt es die Möglichkeit das ich mit Add-Content in eine txt File die neu eingefügten Zeilen immer als erstes in der txt habe und nicht wie Standard ganz unten an der txt angehängt?

Merci

ls - Nur Dateinamen anzeigen ohne z.B. 1:

$
0
0

Ich habe folgenden Befehl:

ls -Name D:\blub\backup\ | sort lastwritetime -Descending | findstr -I -N full | select -First 1

Die Ausgabe ist:

1:full1.backupDa ich darüber gerne einen vergleich mit IF machen möchte brauche ich nur den Namen.
Wie bekomme ich das hin, am besten ohne String-Manipulation, da ich so etwas für Fehleranfällig halte.

Vielen Dank für die Hilfe

Warum:
Ich habe ein Backup, welches jeden Tag abwechselnd in 2 Dateien reinschreiben soll.

Also: A -> B -> A -> B ...

Um rauzufinden welches Backup gerade mit ersetzt werden soll, suche ich den Namen des ältesten Backups.

Add-Content (mehrere Zeilen)

$
0
0

Hiho, das mit Add-Content funkioniert super, jedoch klappt es nicht wenn man mehrere Zeilen gleichzeitig Adden möchte. Hier bleibt dann die txt leer und er Added garnix. Benötigt man hier einen anderen Dateityp oder ein anderes cmdled?

Anbei das Beispiel. 



Ablaufdatum von Zertifikaten in korrekten Datentyp umwandeln und mit get-date verrechen.

$
0
0

Hi,

ich will unabhängig vom Betriebssystem und der Middleware an einer zentralen Stelle das Ablaufdatum von Zertifikaten überwachen. Dazu habe ich folgendes Script geschrieben:

#zu prüfende URL
$uri = 'https://www.website.de'

#Aufbau der abfrage der Website
$request = [System.Net.HttpWebRequest]::Create($uri)



    try
    {
        #startet die Anfrage und verwirft die Antwort, da Fehler nicht relevant sind.
        $request.GetResponse().Dispose()
    }
    catch [System.Net.WebException]
    {
        if ($_.Exception.Status -eq [System.Net.WebExceptionStatus]::TrustFailure)
        {
            #Auch vertrauensbrüche des Zertifikats werden ignoriert.
        }
        else
        {
            throw
        }
    }

#Ablaufdatum des Zertifikats
    $certexpiration = $request.ServicePoint.Certificate.GetExpirationDateString() | get-date -Format d

   
$date = (get-date -format d)


$daysremaining = $certexpiration - $date

Nun scheitere ich daran, das ausgegebene Ablaufdatum mit get-date zu verrechenen.
Ich habe schon versucht, den Datentyp mit [DateTime] zu ändern oder ein Int32 daraus zu machen, das lässt PS aber nicht zu.

Kann mir jmd. erklären, was der Fehler ist?

Gruß



Upload zu SharePoint erweitern

$
0
0

Hallo zusammen,

ich sehe den Wald vor lauter Bäumen nicht. Wir haben im Unternehmen einen Programm zur Auftragserstellung. Wird ein Auftrag erstellt wieder dieser durch ein PowerShell-Skript automatisch im SharePoint hochgeladen. Der Auftrag wird dabei auch automatisch dem jeweiligen Kunden zugeordnet. Die Daten für die korrekte Zuordnung werden ebenfalls durch das Skript genau definiert.

Ich bin PowerShell-Anfänger und soll jetzt im Skript die genaue Stelle und den genauen Pfad identifzieren, die dafür verantwortlich sind, dass die Daten im Sharepoint gespeichert werden. Dann soll ich auf Basis des Pfades eine Passage erstellen, die die Daten aus dem Auftrag (ohne genaue Zuordnung, einfach aufgelistet) in einen separaten Ordner im Netzwerk speichert. 

Ich finde weder den Pfad, noch die Datei (die ja bereits existieren muss). Such ich an der falschen Stelle? Kann mir irgendjemand helfen? Ich habe mehrere Dateien mit verschiedenen Skripten, aber das muss sich ja in dem für SharePoint befinden: (s. CodeBlock) 

Kopierabfrage mit Datumsabgleich und NUR die Dateien in verschiedenen Unterverzeichnissen

$
0
0

Hallo Zusammen,

ich habe schon Ewigkeiten probiert und glaube, dass die Lösung doch viel einfacher ist, als ich sie versuche zu machen. Vielleicht kann mir jemand einen Denkanstoß geben oder hat ein Beispielscript.

Als Beispiel:
Ich habe 60.000 Dateien in circa 10.000 verschiedenen Ordner (ORD12345) [Zahlenfolge immer anders]

Die Dateien die in den verschiedenen Ordnern liegen (alles Bilddateien .JPG, .PNG. .BMP) sollen in ein neues Verzeichnis kopiert werden. Aber lediglich die Dateien und nicht der Ordner.

Beispiel:

C:\Temp\A\ORD123423

[ORD123423-1.JPG, ORD123423-2.JPG]

C:\Temp\A\ORD643643

[ORD643643-1.JPG, ORD643643-2.JPG, ORD643643-3.JPG, ORD643643-4.JPG]

Zielordner:

C:\Temp\Neu\

[ORD123423-1.JPG, ORD123423-2.JPG]

[ORD643643-1.JPG, ORD643643-2.JPG, ORD643643-3.JPG, ORD643643-4.JPG]

Das Script macht genau das, aber 1. ist es sehr langsam, weil die Pfade auf verschiedenen FTP Servern liegen.

2. Gibt es doch sicherlich eine einfachere Möglichkeit und 3. dann noch die Abfrage ob die Quelldatei neuer als die Zieldatei ist?

Habt ihr Ideen und oder Vorschläge?

Hoffentlich habe ich mich verständlich ausgedrückt. 

Code Beispiel:

$quelle = "C:\Temp\"
$ziel = "C:\Temp\Neu"

$Dateien = Get-Childitem $quelle -recurse | where{-not $_.PSIsContainer}
$Ordner = Get-ChildItem $quelle

$j = 0
$i = 0

# Variablen deklarieren

$logdatei = "C:\Temp\Log.log"

# LOG Datei erstellen

  '1' | out-file $logdatei -Append

do
{

$Pfad = $Ordner[$j].Fullname
$pruefung = $Ordner[$j].Name

   if($pruefung -like "ORD*")
    {

    # echo $pruefung
    $kopieren = Get-ChildItem $Pfad -recurse | where{-not $_.PSIsContainer}
    $CopyNeu = $kopieren.Fullname

    # Kopiervorgang mit Ausgabe
    Copy-Item -Path $CopyNeu -Destination $ziel
    echo Copy-Item -Path $CopyNeu -Destination $ziel
    # Hochzählen des "Ordners"
    $j++
    }
    else 
    {
    $j++
    }    
}until($j -eq 100000)

Mailversand in Aufgabenplanung

$
0
0

Hallo,

ich habe ein ganz komisches Verhalten. Ich habe ein Powershellskript, welches Dateien von einem Server per winscp abholt und am Ende mir eine Mail schickt. Führe ich das Skript manuell aus funktioniert alles wunderbar. Plane ich es in der Aufgabenplanung von Windows ein, werden die Dateien zwar vom Server kopiert, aber es wird keine Mail versendet.

Wenn ich nun den Aufgabenplan manuell anstarte funktioniert wieder alles inkl. Mailversand.

Was macht Windows anders wenn es die Aufgabe Zeitgesteuert startet?

Viele Grüße

highjumper83

Powershell System.Int32 Fehlermeldung

$
0
0

Hallo an alle,

ich möchte mit einen Rutsch zig MSA´s anlegen. Hierzu habe ich mir gedacht nehme ich doch Powershell: 

Leider stoße ich immer auf den Fehler "System.Int32" 

Mein Skript sieht wie folgt aus: 

$computername= "testserver"

$Instanzarray= @("Instanz 1","Instanz 2")

foreach ($i in $Instanzarray){
 Write-Host "Anfang von: " $i 

    ($i).substring(0,($i).IndexOf('-')).gettype().ToString()-$computername.ToString()
      
    #New-ADServiceAccount -Name ($i).substring(0,($i).IndexOf('-'))-$computername  -Description "Managed Service Account for SQL Server $computername\$i" -DisplayName "$computername\$i"  -RestrictToSingleComputer  -Enabled $true 
    #Add-ADComputerServiceAccount -Computer $computername -serviceAccount ($i).substring(0,($i).IndexOf('-'))-$computername
 Write-Host "Ende von: " $i



}

Wie ihr seht habe ich es auch schon mit "ToString" versucht jedoch auch ohne Erfolg. 

Wieso tritt der Fehler auf? Was mach ich falsch? 

Viewing all 2314 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>