hallo zusammen
schreibt man jetzt property oder properties? bei mir geht beides
Beispiel
get-aduser -property extensionAttribute2,extensionAttribute1
get-aduser -properties extensionAttribute2,extensionAttribute1
Chris
hallo zusammen
schreibt man jetzt property oder properties? bei mir geht beides
Beispiel
get-aduser -property extensionAttribute2,extensionAttribute1
get-aduser -properties extensionAttribute2,extensionAttribute1
Chris
moin,
ich habe hier zwei Beispiel für Formatierungen gefunden
Get-ChildItem c:\docs | ForEach-Object {'Filename: {0} Created:{1}' -f $_.fullname,$_.creationtime}
und hier eines mit Expressions
$a = @{Expression={$_.Name};Label="Process Name";width=25}, `
@{Expression={$_.ID};Label="Process ID";width=15}, `
@{Expression={$_.MainWindowTitle};Label="Window Title";width=40}
Get-Process | Format-Table $a
und nehme an man könnte auch den -f Parameter anstelle Expression verwenden. Wäre etwas leserlicher. Oder wo liegt hier der Unterschied
get-process|ft-f{$_.name};Label="überschrift" ==> geht nicht
Habe jetzt noch etwas gegoogelt.
ich dachte expressions nutzt man nur für Objekte. Diese Beispiele sind aber auf FT
Get-SmbShare | FT Name, @{ Label=”Folder”; Expression={$_.Path} }, Description –AutoSize
Expression am Anfang oder Ende scheint egal zu sein.
Chris
hallo zusammen,
ich möchte gerne am Exchange alle Entries aller Rollen die das Entry "Search-Mailbox" beinhaltet anzeigen.
also samt Namen und Parameters
Get-ManagementRoleEntry *\Search-Mailbox | select -expandproperty Parameters => geht nur mit einem Parameter
Get-ManagementRoleEntry *\Search-Mailbox | select name, parameters |export-csv c:\temp\_test1.txt => bringt keine Daten
#TYPE Selected.Microsoft.Exchange.Data.Directory.Management.ExchangeRoleEntryPresentation
"Name","Parameters"
"Search-Mailbox","Microsoft.Exchange.Collections.ReadOnlyCollection`1[System.String]"
"Search-Mailbox","Microsoft.Exchange.Collections.ReadOnlyCollection`1[System.String]"
Get-ManagementRoleEntry *\Search-Mailbox | select name, parameters | out-file c:\temp\_test1.txt => bringt daten aber schneidet ab
IncludeUnsearchab...
Get-ManagementRole * | Get-ManagementRoleEntry | where {$_.Name -eq "Search-Mailbox"} | export-csv -path c:\temp\testa.txt => geht auch nicht
CH
Hallo liebe Community,
ich bin neu im Umgang mit Powershell und bisher beschrenkt sich das auf einen Befehl mal in der Shell absetzen und das Ergebnis angucken. Jetzt wurde ich aber an eine Aufgabe gesetzt, die scheinbar Verschachtelung erfordert und dessen Ergebnis für mich momenta ist, dass ich die nicht lösen kann.
Ich soll abfragen, welche User MItglied einer Gruppe sind (ez soweit). Die Ergebnisse sollen zwingend beinhalten
Diese Daten bekomme ich schonmal nicht raus, nur distinguishedName, name, objectClass, objectGUID, SamAccountName, SID. Auch bekomme ich alle Deaktivierten User dazu, bekomme aber nicht raus, wer nun aktiviert oder deaktiviert ist *hilfe?!*
Das von ebendiesen Usern soll ich eine zweite Liste erstellen mit den letzten Logins von denen an einem spezifischen Server. Diese soll dann beinhalten
Da mein Get-ADGroupMember "Gruppenname" schonmal überhauopt nicht in der Lage scheint, mir die Attribute auszuspucken die gefordert sind müsste ich aus meiner Sicht:
Get-ADGroupMember "Gruppenname" ausführen und nur für das Ergebnis
a) Filtern nach aktiviert und deaktiviert
b) die geforderten Attribute der ersten Abfrage NUR für die Aktiven User des Ergebnisses abfragen und exportieren
c) den betroffenen Server abfragen, WANN diese User sich das letzte Mal angemeldet haben
d) die letzte Useranmeldung um die Details füllen, die gefordert sind
Es tut mir leid, aber ab a) schon habe ich KEINE Ahnung, wie ich das machen soll. Die Theorie von Pipes kenne ich, habe aber noch nie mit ihnen arbeiten müssen. Auch habe ich keinerlei Wissen auf dass ich schon zurückgreifen kann, ich kenne keine PowerShell-Befehle und Parameter. Alles was ich bräuchte muss ich googlen.
Kann mit irgendjemand entweder netterweise helfen, einen dieser Befehle zu erstellen oder mir sagen "das geht so eh nicht?"
Und mir bestätigen, dass ich richtig liege und das ein paar Monate intensiven PowerShell Lernens voraussetzt?!
Ich hänge sonst sehr zwischen den Stühlen, "das kannste alles kurz googlen" hat sich nach 3 Stunden Schmerz und Sackgassen nicht bestätigt, wie ich befürchtet habe.
hallo zusammen,
anscheined funktioniert das bei powershell anders als man es von anderen Systemen wie zb. SQL gewohnt ist.
ich habe in einem Buch ein Beispiel gefunden das Daten filter und mittels pipe weitergibt.
wenn ich zb. im SQL eine Abfrage gefiltert auf PLZ 80331 erstelle erhalte ich nur Daten mit 80331 PLZ.
bei dem Beispiel werden auch die Daten gefiltert aber am Ende kann ich trotzdem auf alle Daten zugreifen. Ich dachte beim where habe ich auch nur mehr Objekte die größe 1 sind?
Get-Process | group {$_.name} | where {$_.count -gt 1}| select -ExpandProperty group
CH
Hi,
ich möchte alle Ou´s auslesen, welche direkt unter der OU "Test" liegen.
Mein Problem ist das ich nicht weiß wie ich den Filter dazu setzen soll. Im Moment gibt es mir logischerweise alle untergeordneten Ou´s aus.
Get-ADOrganizationalUnit -Filter '*' -SearchBase "OU=Test,DC=Domäne"
Danke und schönen Feierabend
MfG McMaggi
kann man stringoperationen gleich beim umwandeln angeben.
mir fällt gerade kein besseres Beispiel ein aber so ähnlich
Get-ChildItem c:\ | foreach {$_.tostring().substring()}
CH
Hallo zusammen
Ich habe folgendes Skript:
import-module activedirectory
get-aduser -filter {(company -eq "abc") -and (Enabled -eq $false)} -properties * | select company, samAccountName, MemberOf | Format-List
Wie bekomme ich es jetzt hin, dass die Ausgabe des MemberOf nur mit Name daherkommt? Ich bin mir auch nicht sicher ob mit diesem Skript alle Gruppen ausgelesen werden?
Vielen Dank für die Hilfe....
Moin,
derzeit versuche ich per Powershell die Eventlogs auszulesen. Leider treffe ich dabei auf den Fehler, dass sobald ich "<" verwende, kommt die Fehlermeldung:
kann nicht in den Typ "System.Xml.XmlDocument" konvertiert werden. Fehler: "Ein Name darf nicht mit dem Zeichen ' ', hexadezimaler Wert 0x20, beginnen. Zeile
2, Position 79."
Größer als(>) kann ich ohne Probleme verwenden. Ich nutze folgenden Code dabei:
$xmquery = @"<QueryList><Query Id="0" Path="Security"><Select Path="Security"> *[EventData[(Data[@Name='SubjectUserName'] = 'xx')]] or *[System[EventID < 4700]]</Select></Query></QueryList>"@
Hallo zusammen:)
Ich habe die Aufgabe bekommen, Verzeichnisse zu überwachen. Nun habe ich eine Vorlage genommen (FileSystemWatcher). Nun möchte ich, das wenn sich ein Ordner verschiebt oder gelöscht wird, eine Mail an mich verschickt wird. Komme nicht auf die Lösung. Könntet ihr mir einige Tipps geben der zum Ziel führt?
Der jetztige Quellcode:
Vielen Dank
Hallo liebe Community,
ich bin neu im Umgang mit Powershell und bisher beschrenkt sich das auf einen Befehl mal in der Shell absetzen und das Ergebnis angucken. Jetzt wurde ich aber an eine Aufgabe gesetzt, die scheinbar Verschachtelung erfordert und dessen Ergebnis für mich momenta ist, dass ich die nicht lösen kann.
Ich soll abfragen, welche User MItglied einer Gruppe sind (ez soweit). Die Ergebnisse sollen zwingend beinhalten
Diese Daten bekomme ich schonmal nicht raus, nur distinguishedName, name, objectClass, objectGUID, SamAccountName, SID. Auch bekomme ich alle Deaktivierten User dazu, bekomme aber nicht raus, wer nun aktiviert oder deaktiviert ist *hilfe?!*
Das von ebendiesen Usern soll ich eine zweite Liste erstellen mit den letzten Logins von denen an einem spezifischen Server. Diese soll dann beinhalten
Da mein Get-ADGroupMember "Gruppenname" schonmal überhauopt nicht in der Lage scheint, mir die Attribute auszuspucken die gefordert sind müsste ich aus meiner Sicht:
Get-ADGroupMember "Gruppenname" ausführen und nur für das Ergebnis
a) Filtern nach aktiviert und deaktiviert
b) die geforderten Attribute der ersten Abfrage NUR für die Aktiven User des Ergebnisses abfragen und exportieren
c) den betroffenen Server abfragen, WANN diese User sich das letzte Mal angemeldet haben
d) die letzte Useranmeldung um die Details füllen, die gefordert sind
Es tut mir leid, aber ab a) schon habe ich KEINE Ahnung, wie ich das machen soll. Die Theorie von Pipes kenne ich, habe aber noch nie mit ihnen arbeiten müssen. Auch habe ich keinerlei Wissen auf dass ich schon zurückgreifen kann, ich kenne keine PowerShell-Befehle und Parameter. Alles was ich bräuchte muss ich googlen.
Kann mit irgendjemand entweder netterweise helfen, einen dieser Befehle zu erstellen oder mir sagen "das geht so eh nicht?"
Und mir bestätigen, dass ich richtig liege und das ein paar Monate intensiven PowerShell Lernens voraussetzt?!
Ich hänge sonst sehr zwischen den Stühlen, "das kannste alles kurz googlen" hat sich nach 3 Stunden Schmerz und Sackgassen nicht bestätigt, wie ich befürchtet habe.
Hallo zusammen:)
Ich habe die Aufgabe bekommen, Verzeichnisse zu überwachen. Nun habe ich eine Vorlage genommen (FileSystemWatcher). Nun möchte ich, das wenn sich ein Ordner verschiebt oder gelöscht wird, eine Mail an mich verschickt wird. Komme nicht auf die Lösung. Könntet ihr mir einige Tipps geben der zum Ziel führt?
Der jetztige Quellcode:
Vielen Dank
Hallo zusammen,
könnte man substring in einem | FT verwenden?
ich habe da Felder die sind so lang, die werden in der Anzeige immer abgeschnitten...
CH
Hallo zusammen
In meiner Frage geht es um das Ausführen eines Powershell-Skripts, welches ermöglichen soll, Trend Micro automatisch und mit Administrationsrecht zu deinstallieren und Kaspersky Net Agent zu installieren.
Um Trend Micro zu deinstallieren, wird folgender Befehl ausgeführt:
Start-Process "\\Server\ofcscan\Uninstall\AutoPcc.exe" -Verb runAs
Wie kann ich diesen Befehl mit Admin-Rechte ausführen, ohne dass ich einen Benutzer und das entsprechende Passwort mitgeben muss?
Vielen Dank für eure Unterstützung
Freundliche Grüsse
J_Siva
Hallo
mittlerweile schreibe ich die meisten neuen Scripte in Powershell. Das funktioniert recht gut.
Laut Konvention hier muss im Fehlerfall ein rotes Fenster mit einer sprechenden Meldung stehen bleiben.
Das geht unter DOS/Batch recht einfach per color-befehl. Genau das brauche ich auch in Powershell.
Ich brauche nicht den Hintergrund in einer Zeile oder ab einer Zeile sondern die 1:1 Umsetzung des color-Befehls.
Ich habe schon versucht:
$Host.PrivateData.ConsolePaneForegroundColor = "DarkCyan" $Host.PrivateData.ConsolePaneBackgroundColor= $bckgrnd $Host.PrivateData.ConsolePaneTextBackgroundColor= "Yellow"
oder
function color ($bc,$fc) { $a = (Get-Host).UI.RawUI $a.BackgroundColor = $bc $a.ForegroundColor = $fc ; cls}
ebenso hab ich versucht cmd color 07 aber nichts geht.
Wie kann ich ein vollständig rotes Fenster mit schwarzem Text erreichen?
Hallo zusammen
Kannjemand empfehlen, wieinGPO die ÄnderungenmitPowershellzu machen?
Zum Beispielein neues GPOmithilfe von Powershellzu erstellen:
New-GPO -Name"MyGPO"| New-GPLink -target "ou=MyOU,dc=silogix,dc=fr"-LinkEnabled Yes"
noch eifacher:
New-GPO -Name "MyGPO"Wie kann ich die Änderung in GPO machen, z.B. Softwareeinstellungen ändern usw.
Danke im Voraus!
MfG
Hallo Zusammen
Wie kann ich den Sound meines Windows 10 Computer auf 100% stellen?
Wie kann ich es in diesen Case hier einfügen?
187 {
Start-Process -FilePath "https://youtu.be/o43oI5x86dI?t=53s"
}
Grüsse
Smoke
Hallo zusammen,
Zuerst, ich stehe noch so ziemlich am Anfang mit meiner Skript Karriere mit Powershell, deswegen verzeiht mir bitte den ein oder anderen groben Fehler. Ich möchte Config-Dateien für Firefox über unser Netzwerk mit einem Powershell-Skript verteilen. Dazu habe ich das folgende Skript verfasst:
$Appdata = $env:APPDATA $Default = "$Appdata\Mozilla\Firefox\Profiles\*wws" $Firefox = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe -CreateProfile wws.default" $Laufwerk = “\\FREIGABE\abteilung” ##check/generate profil## if (Test-Path $Default) { "$Default ist bereits vorhanden." } else { $Firefox Write-Host "Profil wurde angelegt" } ##check/generate network drive## if (Test-Path T: -IsValid) { "Netzverbindung zu $Laufwerk ist bereits vorhanden." } else { New-PSDrive –Name "T" –PSProvider FileSystem –Root $Laufwerk -Persist Write-Host "Erstellt" } ##copy files## Copy-Item "T:\FREIGABE\Datei1" "$Default" Copy-Item "T:\FREIGABE\Datei2" "$Default" Copy-Item "T:\FREIGABE\Datei3" "$Default\chrome"
Leider funktioniert das ganze nicht wie gewünscht. Das Skript wirft keinen Fehler tut aber auch nichts. Das Heißt es wird mir Zwar angezeigt, dass z.B. das Profil für Firefox erstellt wurde aber ich finde es unter dem Entsprechneden Pfand nicht. Gleiches
gilt für das Netzlaufwerk. Wenn ich das Skript laufen lasse, bekomme ich folgenden Output:
PS C:\Users\peters.kai\Desktop\GPO> .\Firefox_MHSC.ps1 C:\Program Files (x86)\Mozilla Firefox\firefox.exe -CreateProfile wws.default Profil wurde angelegt Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- T 13,37 26,29 FileSystem \\FREIGABE\abteilung Erstellt
Ebenso bin ich mir unsicher ob nicht vielleicht die Wildcard das Problem sein kann.
$Default = "$Appdata\Mozilla\Firefox\Profiles\*.wws"
Da Firefox seinen Profile mit einem Beliebigen String anlegt (z.B. g1doct5o.default) muss ich dort mit einer arbeiten.
Das würde aber das Fehlende Netzlaufwerk nicht erklären.
Leider komme ich in diesen Punkten nicht weiter und ich hoffe, dass jemand von euch mir vielleicht helfen kann.
Mit freundlichen Grüßen
Kai Peters
CH
Hallo zusammen!
Vorab: ich bemühe mich seit einiger Zeit mich stückweise in PowerShell einzuarbeiten, habe auch einige Bücher zum Thema ("Learn PowerShell in a Month of Luches [D. Jones, J. Hicks]", "Windows PowerShell 4.0: Das Praxisbuch [H. Schwichtenberg]","PowerShell 5.0: Windows-Automation für Einsteiger und Profis [T. Weltner]"), komme aber leider nicht so regelmäßig und strukturiert dazu, wie man es gerne hätte...
Vor diesem Hintergrund: please don't shoot me for obvious/stupid mistakes ():-)
Nun habe ich aktuell eine Herausforderung, die ich gerne mit PowerShell automatisieren würde, bastel' nun schon einige Tage immer wieder daran herum, habe diverse Suchmaschinen befragt und etliche Artikel/Blogs/Forenbeiträge gelesen, komme im Moment aber nicht mehr weiter:
Auf Win7 Clients sollen per StartUp-Skript, unter bestimmten Kriterien, ein bis mehrere lokale Benutzerprofile gelöscht werden.
Aktuell sieht mein Skript wie folgt aus:
$Days=30 Start-Transcript -Path C:\ProfileCleanup.log -Append Write-Warning "Filtern nach User-Profilen die laenger als $Days Tage nicht genutzt wurden" Get-WmiObject -class Win32_UserProfile | Where {(!$_.special) -and ($_.localpath -ne "C:\users\administrator") -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-$Days))} | Remove-WmiObject -Verbose Stop-Transcript
Prinzipiell funktioniert das auch einigermaßen - allerdings scheitert in einigen, nicht ganz seltenen, Fällen das Löschen des User-Ordners (C:\Users\Test), was dann im Log-file mit "RemoveWMICOMException" quittiert wird.
Den Effekt kenne ich vom Löschen von User-Profilen via Gui ("Verzeichnis ist nicht leer").
Manuell, per "rd /q /s c:\Users\tester" gelingt das Löschen spätestens beim zweiten Versuch.
1.
Die Idee wäre, mir mittels WMI Query die zu löschenden User in ein Array zu stecken, dann mit einer Schleife über selbiges zu iterieren, dabei mit Try/Catch erst die User-Verzeichnisse zu löschen und erst bei Erfolg, das User-Profil zu löschen.
Woran ich u.A. im Moment scheitere, ist die im WmiObjekt als „LocalPath“ vorhandene Information in eine Variable zu stecken um sie z.B. an „Remove-Item –Path „Variable“ –Recurse –Force“ übergeben zu können.
Geht das überhaupt so? Oder sollte man das besser anders aufbauen?
2.
Auf den Clients landen dabei Log-Files, die ich versucht habe über ein weiteres Skript einzusammeln
$OutputFile = "C:\Test\ProfileCleanup.log" $ComputerListe = "C:\Test\Computerliste.txt" $compArray = @(Get-Content -Path $ComputerListe) for ($i=0; $i -lt $compArray.Length; $i++){ Write-Host -ForegroundColor Cyan $compArray[$i] Get-Content \\ $compArray[$i] \c$\profileCleanup.log | Out-File $OutputFile -append }
Allerdings gelingt es mir leider nicht, den Client-Namen in „Get-Content –Path“ zu übergeben.
Get-Content : Es wurde kein Positionsparameter gefunden, der das Argument "Test" akzeptiert. In Zeile:8 Zeichen:5+ Get-Content -path \\ $compArray[$i] \c$\profileCleanup.log | Out-File $Outp ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand
3.
Gibt es für mein Vorhaben wesentliche Vorteile, die für „Get-CimInstance“ an Stelle von „Get-WmiObject“ sprechen würden?
Vielen Dank im Voraus!
Gruß TechnikSC885