Quantcast
Viewing all 2314 articles
Browse latest View live

Last Windows Update check Datum anpassen bei W2K16

Hallo.

Windows Server 2012 R2

Wenn man folgenden Dialog aufruft

>Control Panel>System and Security>Windows Update

wird einem dort z.B.: die letzte Prüfung nach Updates angezeigt.

 Most resent check for updates: {Date}

Wenn man nun die Updates direkt über die Powershell (ComObject Microsoft.Update) macht werden die Daten dort nicht angepasst.
Dies kann man dann sehr einfach über Koorekturen in der Registry regeln.

z.B: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Detect

Soweit so gut. 

Windows Server 2016

Dort findet man die Ino für den letzten Scan hier

>Settings>Update & Security>Windows Update

 Your device is up to date. Last checked: {Date}

Leider arbeitet Windows Serve 2016 scheinbar nicht mehr mit den Reg-Keys von Windows Server 2012 R2.

So dass das Datum mit der Zeit veraltet was dann dann irgendwann zu Rückfragen führt:

"Unser System wurde abe schon lange nicht mehr aktualisiert...!?" / "Doch, schau dir die History an" :-)

Um das zu vermeiden würde ich auch gerne auch bei W2K16 das Datum mit der Powershell anpassen.

Ich konnte aber in der Registry keinen passenden Key finden. Jemand vielleicht eine Ahnung wo sich der Wert dort oder sonstwo versteckt?

Beste Grüße
brima

Vergleich mit Daten älter x Tage schließt seit 01.10.2018 aktuelle Daten mit ein

Hallo zusammen,

ich hab hier ein kleines Verständnisproblem.
Ich möchte Daten älter x Tage löschen.

Dazu suche ich folgendermaßen nach entsprechenden Datein:
Get-ChildItem -Path $BLIBLABLUBB -Filter '*.bak'  | Where-Object {$_.LastWriteTime.ToShortDateString() -lt (Get-Date).AddDays(-6).ToShortDateString() }
Hier sollen alle Daten älter 6 Tage selektiert werden.
Das lief auch die letzten Tage so wie es sollte. Seit dem Monatswechsel schließt die Selektion allerdings auch aktuelle Daten mit ein. Ich vermute es liegt am Format des Datums. Hat allerdings jemand eine genaue Erklärung dafür?
Das wäre super! :)

LG
F.

Wie schreibe ich die "Überschriften" eines CMDLets in eine Datei? Beispiel Get-Printer

Hi,

vielleicht hat jemand eine schnelle Hilfe?
Folgende Sachlage:
ich möchte für einen Export in Dateien (z.B. CSV) die möglichen CMDLet Überschriften (Headers) - und nur diese - ermitteln.
Beispiel Get-Printer zeigt mir diese Titel:

Name                           ComputerName    Type         DriverName                PortName       Shared   Published  DeviceType     

Darunter gelistet halt die Objekte. Allerdings interessieren mich diese erstmal nicht.
Ich möchte nur "Name,ComputerName,Type,DriverName,PortName,Shared,Published,DeviceType" als string erhalten.
Dies wäre dann auch nutzbar für andere CMDLets, z.B. Get-Process, Get-Services etc.

Sinn darin?
Nun, ich wäre in der Lage, Reports zu generieren, ohne definieren zu müssen, welche Header eine Export Datei haben soll.
Somit wäre das Script universell einsetzbar für jedes gewünschte CMDLet in Powershell um eben die Standard Header zu verwenden, ohne diese kennen zu müssen.
Meine Versuche scheitern halt.
Ein Ansatz wäre natürlich, erst in CSV zu exportieren, dann CSV zu importieren und dabei nur die erste Zeile zu importieren.
Aber das wäre halt ein Umweg. Müsste doch auch anders gehen, oder?

Vielen Dank für Tipps & Tricks :)

Gruß

Sascha

Gridview -passthru soll einen String in einem Textfeld in einer GUI einfügen.

Moin, ich versuche in meiner GUI durch eine out -GridView -passthru Eingabe ein Textfeld zu aktualisieren

Das ist mein Code

$buttonAccName.Location = '10, 175'
	$buttonAccName.Name = "labelAccname"
	$buttonAccName.Size = '100, 23'
	$buttonAccName.TabIndex = 11
	$buttonAccName.Text = "SendAsPrivilege"
	$buttonAccName.TextAlign = 'MiddleLeft'
	$buttonAccName.Add_Click({
$sauser = Get-ADUser -Filter * |Out-GridView -Passthru
$Porn = "hub"
})
if($Porn -eq "hub")
{
$sausanzahl = $sauser.count
$sausi = $sausanzahl -1
if ($sausanzahl = 1)
{
$Laccname = Get-ADUser $sauser |  Select-Object -ExpandProperty sAMAccountname
if ($saustext -notcontains "@")
{
$saustext = "@" + $Laccname
}
else
{
$saustext = $saustext + " @" + $Laccname
}
}
else
{
for ($n=0; $n -le $sausi ; $n++)
{
$Laccname = Get-ADUser $sauser[$n] |  Select-Object -ExpandProperty sAMAccountname
if ($n=0)
{
if($saustext -notcontains "@")
{
$saustext = "@"+$Laccname
}
else
{
$saustext = $saustext + " @" + $Laccname
}
}
else
{
$saustext = $saustext + " @" + $Laccname
}
}
}
}
# txtAccName
	$txtAccName.Anchor = 'Top, Left, Right'
	$txtAccName.Location = '118, 175'
	$txtAccName.Name = "txtAccName"
	$txtAccName.Size = '173, 20'
	$txtAccName.TabIndex = 12
	$txtAccName.Text = "$saustext


While Schleife mit Out-File

Hallo Zusammen,

ich versuche momentan verzweifelt einen Dienst in Powershell zu erstellen, der den Inhalt eines Ordners ausließt und sobald eine neue Datei drin ist, eine Mail verschickt (mit Counter Option. Dies funktioniert soweit auch schon. Doch wenn ich die Schleife ein weiteres mal laufen lasse, heißt es immer, "Der Prozess kann nicht auf die Datei ... zugreifen, da sie von einen anderen Prozess verwendet wird.

Hier kurz das Beispiel:


while($true){Get-ChildItem-Path xyz -recurse |Out-File...Dann kommt der Mailversand mit der angehängten Datei.

Start-Sleep -Seconds 300}

Meine Frage: Wie kann ich die Datei wieder freigeben, so dass sie neu geschrieben werden kann.

Vielen Dank

Daniel




Gruppe zu einer Gruppe hinzufügen

Hallo,

ich habe ein Skript übernommen, indem wird ein User in eine Gruppe hinzugefügt. 

([ADSI]"WinNT://localhost/test,group").add("WinNT://intra.local/stefhs,user")

Jetzt möchte ich aber, dass zu einer Gruppe eine andere Gruppe hinzugefügt wird, aber das bekomme ich einfach nicht hin. Das klappt leider nicht, beide Gruppen sind vorhanden!

([ADSI]"WinNT://localhost/test,group").add("WinNT://localhost/neueGruppe,group")

Was mache ich falsch?


Textbox in GUI aktualisieren

Ich habe einen Button in meiner GUI, der Text in einer Textbox erstellen soll. Das tut er soweit auch, allerdings ersetzt er vorhandenen Text, was nur passieren soll, wenn kein @ in der Textbox steht.

Hier ist mein Code

Function SendAs
{
	$SAUser = Get-ADUser -Filter * |Out-GridView -Passthru
	$Axel = "Stoll"
	$Userarray = @()
	Foreach ($user in $SAUser){$Userarray  += ('@{0}' -f $user.SamAccountName)}
	$saustext = $userarray -join " "
	if($txtAccName.text -notcontains "@")
	{$txtAccName.text = $saustext}
	else 
	{$txtAccName.text += $txtAccname.text + $saustext}

PowerShell Hilfe

Hallo zusammen,

ich habe ein PS Script wo die Pfade auf lever 2 ausgegeben werden. Nun bräuchte ich noch eine weitere Spalte mir Größe der Spalte in MB. Kann jemand bitte helfen dies zu erweitern? Hab wenig Ahnung von PS. 

$startDir = "C:\Temp\"
function list-dir ($root, $level){
     if ($level -gt 0) {
          dir $root  |Where-Object {$_.psiscontainer} | % { 
	        list-dir -root $_.fullname -level ($level-1)
       	    return $_}
     } 
}

list-dir -root $startDir -level 2|%  {  $_| select-object fullname, size} | export-csv -notypeinformation -delimiter ' ' -path e:\file.csv




Powershell Get- und Set-PSReadLineOption

Hallo,

ich wollte jetzt mal in den Umgang mit der Powershell einsteigen. Habe mir dann erst mal ein Einsteigerbuch gekauft. Schon im ersten Kapitel bin ich auf Probleme gestoßen wo mir jegliches logisch Verständnis fehlt. Ich habe ausgib geschaut, alles was ich gefunden habe war genau so geschrieben wie im Buch. Und zwar geht es um das setzen der Farben in Powershell, bzw. auslesen mit Get-PSReadLineOption und dem Set Pardon.

Der Befehl "Get-PSReadLineOption"

Erst mal die Version $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.17763.1
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.1
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1


Buch und MS Docs

PS C:\> Get-PSReadlineOption
EditMode                               : Windows
ContinuationPrompt                     : >>>
ContinuationPromptForegroundColor      : DarkYellow
ContinuationPromptBackgroundColor      : DarkMagenta
ExtraPromptLineCount                   : 0
AddToHistoryHandler                    :
CommandValidationHandler               :
CommandsToValidateScriptBlockArguments : {ForEach-Object, %, Invoke-Command, icm...}
HistoryNoDuplicates                    : False
MaximumHistoryCount                    : 4096
MaximumKillRingCount                   : 10
HistorySearchCursorMovesToEnd          : False
ShowToolTips                           : False
DingTone                               : 1221
CompletionQueryItems                   : 100
WordDelimiters                         : ;:,.[]{}()/\|^&*-=+---
DingDuration                           : 50
BellStyle                              : Audible
HistorySearchCaseSensitive             : False
HistorySavePath                        : C:\Users\TestUser\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
HistorySaveStyle                       : SaveIncrementally
DefaultTokenForegroundColor            : DarkYellow
CommentForegroundColor                 : DarkGreen
KeywordForegroundColor                 : Green
StringForegroundColor                  : DarkCyan
OperatorForegroundColor                : DarkGray
VariableForegroundColor                : Green
CommandForegroundColor                 : Yellow
ParameterForegroundColor               : DarkGray
TypeForegroundColor                    : Gray
NumberForegroundColor                  : White
MemberForegroundColor                  : White
DefaultTokenBackgroundColor            : DarkMagenta
CommentBackgroundColor                 : DarkMagenta
KeywordBackgroundColor                 : DarkMagenta
StringBackgroundColor                  : DarkMagenta
OperatorBackgroundColor                : DarkMagenta
VariableBackgroundColor                : DarkMagenta
CommandBackgroundColor                 : DarkMagenta
ParameterBackgroundColor               : DarkMagenta
TypeBackgroundColor                    : DarkMagenta
NumberBackgroundColor                  : DarkMagenta
MemberBackgroundColor                  : DarkMagenta
EmphasisForegroundColor                : Cyan
EmphasisBackgroundColor                : DarkMagenta
ErrorForegroundColor                   : Red
ErrorBackgroundColor                   : DarkMagenta


Meine Ausgabe

PS C:\Users\Chef> Get-PSReadLineOption


EditMode                               : Windows
AddToHistoryHandler                    :
HistoryNoDuplicates                    : True
HistorySavePath                        : C:\Users\Chef\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
HistorySaveStyle                       : SaveIncrementally
HistorySearchCaseSensitive             : False
HistorySearchCursorMovesToEnd          : False
MaximumHistoryCount                    : 4096
ContinuationPrompt                     : >>
ExtraPromptLineCount                   : 0
PromptText                             : >
BellStyle                              : Audible
DingDuration                           : 50
DingTone                               : 1221
CommandsToValidateScriptBlockArguments : {ForEach-Object, %, Invoke-Command, icm...}
CommandValidationHandler               :
CompletionQueryItems                   : 100
MaximumKillRingCount                   : 10
ShowToolTips                           : True
ViModeIndicator                        : None
WordDelimiters                         : ;:,.[]{}()/\|^&*-=+'"–—―
CommandColor                           : "$([char]0x1b)[93m"
CommentColor                           : "$([char]0x1b)[32m"
ContinuationPromptColor                : "$([char]0x1b)[33m"
DefaultTokenColor                      : "$([char]0x1b)[33m"
EmphasisColor                          : "$([char]0x1b)[96m"
ErrorColor                             : "$([char]0x1b)[91m"
KeywordColor                           : "$([char]0x1b)[92m"
MemberColor                            : "$([char]0x1b)[97m"
NumberColor                            : "$([char]0x1b)[97m"
OperatorColor                          : "$([char]0x1b)[90m"
ParameterColor                         : "$([char]0x1b)[90m"
SelectionColor                         : "$([char]0x1b)[35;43m"
StringColor                            : "$([char]0x1b)[36m"
TypeColor                              : "$([char]0x1b)[37m"
VariableColor                          : "$([char]0x1b)[92m"


Erst mal fehlen Variabelen wie z.B. 

ContinuationPromptForegroundColor
ContinuationPromptBackgroundColor

und die Farben werden nicht als Farbnamen angezeigt.

Dann gehts ja weiter mit Set-PSReadlineOption. Wenn ich mir nun mit StrG+Leertaste alle Optionen anzeigen lasse, fehlen mir halt auch hier welche. auch hier der Vergleich.

Das sollte ich laut docs.microsoft haben

Set-PSReadlineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <String>]
   [-ContinuationPromptForegroundColor <ConsoleColor>]
   [-ContinuationPromptBackgroundColor <ConsoleColor>]
   [-EmphasisForegroundColor <ConsoleColor>]
   [-EmphasisBackgroundColor <ConsoleColor>]
   [-ErrorForegroundColor <ConsoleColor>]
   [-ErrorBackgroundColor <ConsoleColor>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <System.Func`2[System.String,System.Boolean]>]
   [-CommandValidationHandler <System.Action`1[System.Management.Automation.Language.CommandAst]>]
   [-HistorySearchCursorMovesToEnd]
   [-MaximumHistoryCount <Int32>]
   [-MaximumKillRingCount <Int32>]
   [-ResetTokenColors]
   [-ShowToolTips]
   [-ExtraPromptLineCount <Int32>]
   [-DingTone <Int32>]
   [-DingDuration <Int32>]
   [-BellStyle <BellStyle>]
   [-CompletionQueryItems <Int32>]
   [-WordDelimiters <String>]
   [-HistorySearchCaseSensitive]
   [-HistorySaveStyle <HistorySaveStyle>]
   [-HistorySavePath <String>]
   [-ViModeIndicator <ViModeStyle>]
   [<CommonParameters>]

[-TokenKind] <TokenClassification>
   [[-ForegroundColor] <ConsoleColor>]
   [[-BackgroundColor] <ConsoleColor>]
   [<CommonParameters>]

und hier meine

Set-PSReadLineOption [-EditMode <EditMode>] [-ContinuationPrompt <string>] [-HistoryNoDuplicates] [-AddToHistoryHandler <Func[string,bool]>] [-CommandValidationHandler <Action[CommandAst]>] [-HistorySearchCursorMovesToEnd] [-MaximumHistoryCount <int>] [-MaximumKillRingCount <int>] [-ShowToolTips] [-ExtraPromptLineCount <int>] [-DingTone <int>] [-DingDuration <int>] [-BellStyle <BellStyle>] [-CompletionQueryItems <int>] [-WordDelimiters <string>] [-HistorySearchCaseSensitive] [-HistorySaveStyle <HistorySaveStyle>] [-HistorySavePath <string>] [-AnsiEscapeTimeout <int>] [-PromptText <string>] [-ViModeIndicator <ViModeStyle>] [-Colors <hashtable>] [<CommonParameters>]

gibt es dafür eine Erklärung?

Danke vorab

überblick bei vielen IFs behalten

moin,

wie macht ihr das mit den vielen geschwungenen Klammern damit ihr den überblick behält?

Notepad+ markiert den IF mit einer roten Linie wenn die Endklammer auf selber hohe ist. Das finde ich ganz gut gibt es aber im ISE Editor leider nicht.


Chris

Spezielle Anforderung Random Generator

Hallo,

für unsere Weihnachtsfeier demnächst ist an mich folgende Anforderung herangetragen worden:

Eine CSV-Datei / Excel-Datei mit 40 Zufallszahlen von 100 - 200.

Wünschenswert wäre eine Möglichkeit durch Reklick o. Ä. eine erneute Erstellung / Überschreibung der vorhandenen Zahlen

Für diesen Zweck habe ich mir Getrandom angesehen. Min + Max kriege ich hin.

Hätte jemand einen Tipp für das weitere Vorgehen? :-)

Gruß
Tobi

Parsen von Log-Datei

Hallo!

ich hätte eine Frage(hilfe) zum parsen von Log-Datei:

Ich habe so einen Log-Eintrag:

Jul 6 17:35:10 sdc-prius motion_planner[1284]: new destination: [55.733510, 37.587401]
Jul 6 17:35:11 sdc-prius control[1284]: next waypoint: [55.733668, 37.587143]
Jul 6 17:35:11 sdc-prius control[1281]: steering: 212, throttle: 420
Jul 6 17:35:11 sdc-prius control[1281]: steering: 145, throttle: 634
Jul 6 17:35:12 sdc-prius control[1281]: steering: 65, throttle: 538
Jul 6 17:35:13 sdc-prius control[1284]: next waypoint: [55.733948, 37.586731]
Jul 6 17:35:13 sdc-prius control[1281]: steering: 121, throttle: 340
Jul 6 17:35:13 sdc-prius control[1281]: steering: 150, throttle: 600
Jul 6 17:35:14 sdc-prius control[1281]: steering: 46, throttle: 346
Jul 6 17:35:13 sdc-prius control[1284]: next waypoint: [55.733955, 37.586744]
Jul 6 17:35:13 sdc-prius control[1281]: steering: 485, throttle: 567
Jul 6 17:35:13 sdc-prius control[1284]: next waypoint: [55.734094, 37.586518]
Jul 6 17:35:14 sdc-prius control[1281]: steering: 278, throttle: 400
Jul 6 17:35:14 sdc-prius control[1284]: next waypoint: [55.734300, 37.586229]
Jul 6 17:35:14 sdc-prius control[1281]: steering: 982, throttle: 400
Jul 6 17:35:14 sdc-prius control[1284]: next waypoint: [55.734530, 37.585896]
Jul 6 17:35:14 sdc-prius control[1281]: steering: 98, throttle: 400
Jul 6 17:35:15 sdc-prius control[1284]: next waypoint: [55.733948, 37.586731]
Jul 6 17:35:15 sdc-prius control[1281]: steering: 33, throttle: 200
Jul 6 17:35:15 sdc-prius motion_planner[1284]: new destination: [55.734839, 37.585531]
Jul 6 17:35:15 sdc-prius control[1281]: steering: 2, throttle: 100

ich muss diese Log-Datei nach "next waypoint" filtern und in so einen Zustande bringen:

Jul 6 17:35:11 37.587143, 55.733668
Jul 6 17:35:13 37.586731, 55.733948
Jul 6 17:35:13 37.586744, 55.733955
Jul 6 17:35:13 37.586518, 55.734094
Jul 6 17:35:14 37.586229, 55.734300
Jul 6 17:35:14 37.585896, 55.734530
Jul 6 17:35:15 37.586731, 55.733948

Könnt ihr mir helfen wie ich das machen soll??





Fehler

Wenn der String startet mit Sonderzeichen '|' startet, dann...

Hallo zusammen,

ich möchte eine CSV ohne Überschriften auslesen und gehe diese Zeile für Zeile durch.

Wenn die entsprechende Zeile mit dem Sonderzeichen '|' startet, dann soll die Zeile gesplittet und gespeichert werden:

$prefix = Split-Path -Parent $PSScriptRoot
$SQLErg = Import-Csv "$prefix\var\run\SQLlog.csv" 


foreach ($line in $SQLErg){
$test = [string]$line
	if ($test -match "^[\|].*"){
		$splitline = $test.Split("|")

Darüberhinaus habe ich es mit 'like' versucht.

Kann mir jemand sagen, was ich falsch mache?

VG

Timo

gci auf einem anderen computer ausführen

moin,

ich möchte gerne Dateien älter als auf einem anderen Computer löschen. Derzeit läuft nachfolgender Schedule TASK am eigenen Computer. Geht das Script auch auf einem anderen Computer. Es soll zentral auf einem JOB  Server gestartet werden. Die LOGs liegen auf anderen Servern

gci ‘c:\program files\microsoft\exchange server\V15\Logging\’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item


Chris


Powershell Skript zum automatischen löschen von alten Dateien

Hallo!

Ich bin neu im Forum und habe eine Frage zu einem Skript weil ich mich leider zu wenig gut auskenne.

Ich habe lange nach einer Möglichkeit gesucht, alte Dateien von meiner Überwachungskamera zu löschen. Die Kamera speichert per FTP auf eine extra Partition meines Servers. Leider habe ich im Netz keine einfachere Möglichkeit gefunden, als dieses Problem mit einem Powershell Skript zu lösen, welcher täglich per Windows Aufgabenplanung ausgeführt wird.

Einen Skript habe ich ansatzweise gefunden (siehe Anhang), die Aufgabenplanung funktioniert auch schon, nur leider macht der Skript nicht, was er soll.

Wenn ich den Skript ausführe, werden die zu löschenden Dateien alle aufgelistet (siehe Foto), nur leider verschwinden diese nicht.

Würde mich freuen, wenn jemand das Problem erkennen würde und mir sagen würde, was ich ändern müsste.

Vielen Dank im Voraus!

Gruß _PeterM_

$DataFolder = “Z:\*.*”
$Days_toDelete = (get-Date).adddays(-2)

Get-Childitem $DataFolder -recurse | ?{!$_.PSIsContainer -and ($_.LastWriteTime -lt $Days_toDelete)} | remove-item -whatif -force
exit

FOTO darf ich leider nicht anfügen, somit hier der Text, welcher beim Ausführen für jede Datei einmal aufgelistet wird:

WhatIf: Ausführen des Vorgangs "Datei entfernen" für das Ziel "Z:\A1810........ .jpg".

Probleme bei GroupBoxen in einer GUI

Hallo Skripter,

bin dabei ein Skript zu schreiben um das Erstellen eines neuen Benutzers zu erleichtern. Aktuell bin ich an der Oberfläche dran, aber da gibt es da Problem, dass ich drei Radio Button´s nicht zu einer GroupBox hinzufügen kann bzw. den Fehler nicht finde.

Habe schon viele Tests gemacht bei denen es funktioniert hat also kann es meiner Ansicht nach nur eine Kleinigkeit sein, aber genau diese hat mich schon lange suchen lassen - ohne Erfolg.

Vielen Dank für eure Bemühungen :)

Hier der Code:

function global:GUI { # .NET-Erweiterungen werden in den Ram geladen Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing #Fenster wird erstellt $global:fenster = New-Object System.Windows.Forms.Form $fenster.Text = 'Assistent zum Erstellen eines neuen Benutzers' $fenster.Size = New-Object System.Drawing.Size(900,900) $fenster.StartPosition = 'CenterScreen' $fenster.KeyPreview = $True $fenster.Add_KeyDown({if ($_.KeyCode -eq „Escape“) {$fenster.DialogResult = 0} }) $Font = New-Object System.Drawing.Font("Arial",9) $fenster.Font = $Font #Gruppenbox Benutzerdaten $MyGroupBox = New-Object System.Windows.Forms.GroupBox $MyGroupBox.Location = '40,30' $MyGroupBox.size = '480,650' $MyGroupBox.text = "GroupBox" #Gruppenbox Bereichsauswahl $MyGroupBox1 = New-Object System.Windows.Forms.GroupBox $MyGroupBox1.Location = '550,150' $MyGroupBox1.size = '280,400' $MyGroupBox1.text = "GroupBox1" #Label und Textfeld zur Eingabe des Nachnamens $global:label1 = New-Object System.Windows.Forms.Label $label1.Location = New-Object System.Drawing.Point(60,30) $label1.Size = New-Object System.Drawing.Size(120,30) $label1.Text = 'Nachname:' $global:textBox1 = New-Object System.Windows.Forms.TextBox $textBox1.Location = New-Object System.Drawing.Point(180,30) $textBox1.Size = New-Object System.Drawing.Size(130,30) $global:labelbsp1 = New-Object System.Windows.Forms.Label $labelbsp1.Location = New-Object System.Drawing.Point(320,30) $labelbsp1.Size = New-Object System.Drawing.Size(150,30) $labelbsp1.Text = 'Bsp.: Mustermann' #Label und Textfeld zur Eingabe des Vornamens $global:label2 = New-Object System.Windows.Forms.Label $label2.Location = New-Object System.Drawing.Point(60,100) $label2.Size = New-Object System.Drawing.Size(120,30) $label2.Text = 'Vorname:' $global:textBox2 = New-Object System.Windows.Forms.TextBox $textBox2.Location = New-Object System.Drawing.Point(180,100) $textBox2.Size = New-Object System.Drawing.Size(130,30) $global:labelbsp2 = New-Object System.Windows.Forms.Label $labelbsp2.Location = New-Object System.Drawing.Point(320,100) $labelbsp2.Size = New-Object System.Drawing.Size(150,30) $labelbsp2.Text = 'Bsp.: Max' #Label und Textfeld zur Eingabe der Beschreibung $global:label3 = New-Object System.Windows.Forms.Label $label3.Location = New-Object System.Drawing.Point(60,170) $label3.Size = New-Object System.Drawing.Size(120,30) $label3.Text = 'Beschreibung:' $global:textBox3 = New-Object System.Windows.Forms.TextBox $textBox3.Location = New-Object System.Drawing.Point(180,170) $textBox3.Size = New-Object System.Drawing.Size(130,30) $global:labelbsp3 = New-Object System.Windows.Forms.Label $labelbsp3.Location = New-Object System.Drawing.Point(320,170) $labelbsp3.Size = New-Object System.Drawing.Size(150,30) $labelbsp3.Text = 'Bsp.: XXXX' #Label und Dropdown-Auswahl zur Eingabe des Titels #Dropdown Auswahl $global:label4 = New-Object System.Windows.Forms.Label $label4.Location = New-Object System.Drawing.Point(60,240) $label4.Size = New-Object System.Drawing.Size(120,30) $label4.Text = 'Titel:' $global:dropdown1 = New-Object System.Windows.Forms.Combobox $dropdown1.Location = New-Object System.Drawing.Size(180,240) $dropdown1.Size = New-Object System.Drawing.Size(130,30) [void] $dropdown1.Items.Add("XX") #Angestellter [void] $dropdown1.Items.Add("") $dropdown1.Height = 70 $global:labelbsp4 = New-Object System.Windows.Forms.Label $labelbsp4.Location = New-Object System.Drawing.Point(320,240) $labelbsp4.Size = New-Object System.Drawing.Size(150,30) $labelbsp4.Text = 'Test Titel' #Label und Textfeld zur Eingabe der Raumnummer $global:label5 = New-Object System.Windows.Forms.Label $label5.Location = New-Object System.Drawing.Point(60,310) $label5.Size = New-Object System.Drawing.Size(120,30) $label5.Text = 'Raumnummer:' $global:textBox5 = New-Object System.Windows.Forms.TextBox $textBox5.Location = New-Object System.Drawing.Point(180,310) $textBox5.Size = New-Object System.Drawing.Size(130,30) $global:labelbsp5 = New-Object System.Windows.Forms.Label $labelbsp5.Location = New-Object System.Drawing.Point(320,310) $labelbsp5.Size = New-Object System.Drawing.Size(150,30) $labelbsp5.Text = 'Bsp.: XXX' #Label und Textfeld zur Eingabe des Vorgesetzten $global:label6 = New-Object System.Windows.Forms.Label $label6.Location = New-Object System.Drawing.Point(60,380) $label6.Size = New-Object System.Drawing.Size(120,30) $label6.Text = 'Vorgesetzter:' $dropdown2 = New-Object System.Windows.Forms.Combobox $dropdown2.Location = New-Object System.Drawing.Size(180,380) $dropdown2.Size = New-Object System.Drawing.Size(130,30) [void] $dropdown2.Items.Add("Administrator") #Für Testzwecke $dropdown2.Height = 70 $global:labelbsp6 = New-Object System.Windows.Forms.Label $labelbsp6.Location = New-Object System.Drawing.Point(320,380) $labelbsp6.Size = New-Object System.Drawing.Size(150,30) $labelbsp6.Text = '' #Label und Dropdown-Auswahl zur Eingabe des Abteilung $global:label7 = New-Object System.Windows.Forms.Label $label7.Location = New-Object System.Drawing.Point(60,450) $label7.Size = New-Object System.Drawing.Size(120,30) $label7.Text = 'Abteilung:' $global:dropdown3 = New-Object System.Windows.Forms.Combobox $dropdown3.Location = New-Object System.Drawing.Size(180,450) $dropdown3.Size = New-Object System.Drawing.Size(130,30) [void] $dropdown3.Items.Add("") $dropdown3.Height = 70 $global:labelbsp7 = New-Object System.Windows.Forms.Label $labelbsp7.Location = New-Object System.Drawing.Point(320,450) $labelbsp7.Size = New-Object System.Drawing.Size(150,30) $labelbsp7.Text = '' #Label und Textfeld zur Eingabe der Internen Telefonnumme $global:label8 = New-Object System.Windows.Forms.Label $label8.Location = New-Object System.Drawing.Point(60,520) $label8.Size = New-Object System.Drawing.Size(120,40) $label8.Text = 'interne Telefonnummer:' $global:textBox8 = New-Object System.Windows.Forms.TextBox $textBox8.Location = New-Object System.Drawing.Point(180,520) $textBox8.Size = New-Object System.Drawing.Size(130,30) $global:labelbsp8 = New-Object System.Windows.Forms.Label $labelbsp8.Location = New-Object System.Drawing.Point(320,520) $labelbsp8.Size = New-Object System.Drawing.Size(150,30) $labelbsp8.Text = 'Bsp.: XXXX' #Label und Textfeld zur Eingabe der Mobiltelefonnummer $global:label9 = New-Object System.Windows.Forms.Label $label9.Location = New-Object System.Drawing.Point(60,590) $label9.Size = New-Object System.Drawing.Size(120,30) $label9.Text = 'Mobiltelefon:' $global:textBox9 = New-Object System.Windows.Forms.TextBox $textBox9.Location = New-Object System.Drawing.Point(180,590) $textBox9.Size = New-Object System.Drawing.Size(130,30) $global:labelbsp9 = New-Object System.Windows.Forms.Label $labelbsp9.Location = New-Object System.Drawing.Point(320,590) $labelbsp9.Size = New-Object System.Drawing.Size(150,30) $labelbsp9.Text = 'Bsp.: XXXX' #Radio button 1 $global:RadioButton1 = New-Object System.Windows.Forms.RadioButton $RadioButton1.Location = '590,200' $RadioButton1.size = '150,20' $RadioButton1.Checked = $false $RadioButton1.Text = "Radio1" #Radio button 2 $global:RadioButton2 = New-Object System.Windows.Forms.RadioButton $RadioButton2.Location = '590,300' $RadioButton2.size = '150,20' $RadioButton2.Checked = $false $RadioButton2.Text = "Radio2" #Radio button 3 $global:RadioButton3 = New-Object System.Windows.Forms.RadioButton $RadioButton3.Location = '590,400' $RadioButton3.size = '150,20' $RadioButton3.Checked = $false $RadioButton3.Text = "Radio3" #Button Erstellen $global:erstellenButton = New-Object System.Windows.Forms.Button $erstellenButton.Location = New-Object System.Drawing.Size(140,750) $erstellenButton.Size = New-Object System.Drawing.Size(120,50) $erstellenButton.Text = „Erstellen“ $erstellenButton.Enabled = $false $erstellenButton.Add_Click{Benutzererstellung} #Button Abbrechen $global:cancelButton = New-Object System.Windows.Forms.Button $cancelButton.Location = New-Object System.Drawing.Size(360,750) $cancelButton.Size = New-Object System.Drawing.Size(120,50) $cancelButton.Text = „Abbrechen“ $cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel $fenster.CancelButton = $CancelButton #Button Prüfen $global:PrüfenButton = New-Object System.Windows.Forms.Button $PrüfenButton.Location = New-Object System.Drawing.Size(580,750) $PrüfenButton.Size = New-Object System.Drawing.Size(120,50) $PrüfenButton.Text = „Prüfen“ $PrüfenButton.Add_Click{Prüfung} #Hinzufügen zum Fenster $fenster.Controls.AddRange(@($MyGroupBox, $MyGroupBox1, $erstellenButton, $PrüfenButton, $cancelButton)) #Hinzufügen zur GroupBox #rechts $MyGroupBox.Controls.AddRange(@($label1,$label2,$label3,$label4,$label5,$label6,$label7,$label8,$label9,$textBox1,$textBox2,$textBox3,$textBox5,$textBox8,$textBox9,$dropdown1,$dropdown2,$dropdown3,$labelbsp1,$labelbsp2,$labelbsp3,$labelbsp4,$labelbsp5,$labelbsp6,$labelbsp7,$labelbsp8,$labelbsp9)) #Hinzufügen zur GroupBox1 #links $MyGroupBox1.Controls.AddRange(@($RadioButton1,$RadioButton2,$RadioButton3))

$fenster.Add_Shown({$fenster.Activate()}) $fenster.Topmost = $true [void] $fenster.ShowDialog() } GUI


XML-Element über den Namen ansprechen

Gutem Morgen,

leider bin ich nicht so der XML-Held und weiß daher auch nicht so richtig, wie ich nach einer Lösung suchen soll.

Meine XML-Datei hat den folgenden Aufbau:

<?xml version="1.0" encoding="utf-8"?><System><Umgebungen><Umgebung Name="Testanlage"><Mandant Name ="Aussendienst"><Server1>xyz1</Server1><Server2>xyz2</Server2></Mandant><Mandant Name="Innendienst"><Server1>xyz3</Server1><Server2>xyz4</Server2></Mandant></Umgebung><Umgebung Name="Produktion"><Mandant Name ="Aussendienst"><Server1>abc1</Server1><Server2>abc2</Server2></Mandant><Mandant Name="Innendienst"><Server1>abc3</Server1><Server2>abc4</Server2></Mandant></Umgebung></Umgebungen></System>

Diese XML-Datei importiere ich in PowerShell. Das funktioniert; alles gut soweit.

Jetzt möchte ich gerne in meiner Variablen eine Umgebungen und einen Mandant ganz gezielt über den Namen ansprechen. Leider habe ich keine Idee, wie das funktioniert. Tagelanges Suchen und ausprobieren ist leider erfolglos geblieben und auch meine Kollegen wissen keinen Rat. Ich stelle mir das so vor, wie bei Excel, wenn ich ein Arbeitsblatt über den Namen anspreche: Worksheets("<Arbeitsblattname>"). Also so ungefähr:

<Variable>.System.Umgebungen.Umgebung('Testanlage').Mandant('Innendienst').Server1

Leider funktioniert es so nicht.
Wie komme ich am Einfachsten an meinen Server1?

Für jeden Lösungsvorschlag oder -ansatz bin ich dankbar.

Vielen Dank und viele Grüße

Sabine

Drucker standard Schacht setzen

Hallo zusammen

Ich habe mir ein Script erstell, mit dem ich mithilfe von Powershell einen Drucker installieren kann.

Gerne möchte ich aber das der Script noch den Standardschacht setzt.

Mit folgendem Code kann ich die Schächte des Druckers anzeigen

Add-Type -AssemblyName System.Drawing

$printers = [System.Drawing.Printing.PrinterSettings]::InstalledPrinters

$printersettings = New-Object System.Drawing.Printing.PrinterSettings

foreach ($printer in $printers) {
  Write-Output "`n";
  $printersettings.PrinterName = $printer
  Write-Output $printer "------------------------------------------------";
  foreach ($source in $printersettings.PaperSources) {
    Write-Output ([string]$source.RawKind + " - " + $source.SourceName);
  }
}

In etwa so:

Xerox WorkCentre 7535
------------------------------------------------
15 - Automatisch auswählen
7165 - Automatische Auswahl
7153 - Behälter 1
7154 - Behälter 2
7155 - Behälter 3
7156 - Behälter 4
7157 - Behälter 5 (Zusatzzufuh
7158 - Behälter 6


Microsoft XPS Document Writer
------------------------------------------------
15 - Automatisch auswählen


Brother MFC-L5750DW series
------------------------------------------------
7 - Automatische Zufuhr
1 - Zufuhr 1
258 - MF-Zuführung


Brother MFC-9460
------------------------------------------------
7 - Automatische Zufuhr
1 - Zufuhr 1
258 - MF-Zuführung
4 - Manuell


Brother HL-6180
------------------------------------------------
7 - Automatische Zufuhr
1 - Zufuhr 1
258 - MF-Zuführung
4 - Manuell

Wie kann ich einen der Schächte nun als standardwert definieren?

Ebenfalls sind je nach drucker nicht alle Schächte bereits vorhanden. In den Druckereinstellungen kann ich diese im Zubehör aktivieren. Kann ich dies auch per Powershell machen?

Besten Dank für die Hilfe.

Replikation eines neues AD Objektes in den globalen Katalog

Hallo zusammen,

wir haben AGDLP Prinzig und 1x Root Domäne (inkl. GC) und 3x Subdomänen.

Ich habe ein kleines Skript geschrieben, welches eine Domain local AD-Gruppe anlegt und in jeder Domänen weitere globale AD Gruppen anlegt. 

Beispiel:

root.domain             lok_adgruppe

root.domain             global_adgruppe

sub1.root.domain     global_adgruppe 

usw.

Nach der Anlage müssen die Gruppenmitgliedschaften verschachtelt werden. Also alle "globale" Gruppen müssen Mitglied der "lokalen" Gruppe werden. Dies ist leider nicht möglich, weil die neu angelegte Objekte nicht zu dem globalem Katalog bzw. untereinander repliziert wurden. 

wie kann ich so eine Replikation noch im Skript anstoßen?

Vielen Dank

Viewing all 2314 articles
Browse latest View live


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