Jump to content

Search the Community

Showing results for tags 'PowerShell'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Windows Server Forum & IT Pro Forum
    • Windows Forum — Clients
    • Windows Forum — Server & Backoffice
    • Windows Forum — LAN & WAN
    • Windows Forum — Scripting
    • Windows Forum — Security
    • Tipps & Links
  • MCSE Forum & Cisco Forum
    • Microsoft Zertifizierungen
    • Cisco Forum — Allgemein
    • Testsoftware & Bücher
    • Off Topic

Blogs

  • MCSEboard.de Blog

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Meine Homepage

Found 96 results

  1. Hi Community, ich habe gerade ein Problem auf einem Exchange Server 2013. Ich wollte in der Exchange Management Shell ein Powershell Script ausführen, allerdings bekomme ich immer die Fehlermeldung (siehe Anhang). Ich habe bereits die Execution Policy wie folgt umgestellt: Set-ExecutionPolicy unrestricted Allerdings ohne Erfolg. Hat jemand von euch eine Idee hierzu? Danke im Voraus. Grüße Phil
  2. Hallo zusammen, ich versuche seit geraumer Zeit ein PowerShell Script in unsere APC PowerChute einzubinden. Nur leider scheint das nicht so wirklich zu funktionieren. Ich möchte, dass die CMD Datei (was anderes kann PowerChute scheinbar nicht ausführen) eine PowerShell Datei - die im gleichen Verzeichnis liegt ausführt, die dann die Aktionen durchführt. In native-batch lässt sich das, was ich möchte nicht umsetzen. Meine CMD-Datei sieht aktuell so aus. Nur eine Zeile: powershell -command .\test.ps1 In der "test.ps1" steht dann der eigentliche Code drin. Wenn ich die CMD-Datei mit einem doppelklick ausführe tut sie auch das was sie soll -> Die CMD-Datei startet die PS1 Datei und die läuft durch. Wenn ich die CMD-Datei nun aber per PoerChute starte, läuft die CMD-Datei auch durch, die ps1-Datei wird aber scheinbar übersprungen. Lustiger weise werden aber die CMD-Commands, die nach dem PS-Aufruf sind noch ausgeführt. Den Dienst habe ich bereits entsprechend angepasst. Jemand eine Idee, wie ich das lauffähig bekommen kann? Grüße und Danke!
  3. Hallo Zusammen, als absoluter Neueinsteiger in das Thema Powershell, habe ich eine schwierige Aufgabe erhalten. Ich benötige ein Powershell-Skript, mit folgendem Inhalt: 1.) Stop Windows-Service "Dienst123" 2.) Search the computer for the Java Runtime directory path without the final "\ bin \ java.exe" of the ORACLE_HOME directory - (bei mehreren Oracle Versionen, die neueste Version nehmen) 3.) The determined directory path e.g. "C:\app\oracle\product\12.1.0\dbhome_1\jdk\jre\" into existing "configfile.config" overwrite the value "JAVAPFAD" replace and save. 4.) Start Windows-Service "Dienst123" 5.) Messagebox/Info Success or Failed. 6.) Path for the config.config: "C:\Program Files\CONFIG\config.config" Wie kann das am besten umsetzen? Kann mir jemand Hilfestellung geben? Für eure Unterstützung vielen Dank! VG DuDo
  4. Hallo zusammen, ich habe mal eine Frage betreffend Powershell und letzte Zeile kopieren. Ich habe eine Textdatei test1.txt die folgende Werte beinhaltet: 1 2 3 4 5 6 7 8 9 Ich würde gerne die Datei auslesen und die letzte Zeile (hier die Zahl 9) in ein neues Textdokument mit dem Namen test2.txt kopieren. Habt ihr einen Tipp, wie der Code aussehen müsste? Danke euch in Voraus.
  5. Hallo zusammen, ich bin gerade dabei ein Powershell-Skript zu schreiben, dass alle Mitgliedschaften eines Users auflisten soll. Dazu werden die Gruppen, in denen der User Mitglied ist abgefragt. Im Beschreibunsfeld tragen wir immer Erstellungsdatum, Request-Bearbeiter sowie die Rwquest-Nummer und in einer zweiten Zeile die Funktion ein. Im Ersten Schritt habe ich den Zeilenumbruch schon entfernt. Jetztmöchte ich gern mit TrimStart ab dem ersten Leerzeichzeichen die Funktion seperieren. Ausgangsituation:. 21.05.19/XY/REQ-2019-12345 Gruppe für lokale Admins auf Server1 Ist 21.05.19/XY/REQ-2019-12345 Gruppe für lokale Admins auf Server1 Soll Gruppe für lokale Admins auf Server1 Hat jemand einen Tipp ?
  6. Hallo zusammen, kann mir jemand erklären wo der Unterschied liegt, ob man sich "lokal" (per RDP auf Server) eine PowerShell öffnet oder ob man remote eine PS-Session öffnet? ->Gehe ich zB per RDP auf Server1, öffne eine PS (DomAdmin) klappt der Aufruf ->Öffne ich entweder vom WAC aus eine PS auf Server1 oder verbinde mich remote (Enter-PSSession server1) zu einer PowerShell auf Server1 - ebenfalls als DomAdmin!! - dann kommt ein Vorgangsfehler
  7. Hallo zusammen, wie kann ich ein Credential-Objekt mit einer Mailadresse erstellen? $username = "Azureadmin@domain.de" $credObject = New-Object System.Management.Automation.PsCredential($username,$securePwd) was mein bisheriger Ansatz, das beschwert sich aber, das die mail kein gültiges Samaccountname-Format hat. Die Credentials brauche ich hierfür: New-AzureADSSOAuthenticationContext -CloudCredentials $credObject Gibt es noch andere Credential-Objekt-Typen? Das Thema Passwort in Script hab ich schon gelöst mit einer AES-Verschlüsselung, an dem Benutzernamen komme ich aber auch mit Google nicht weiter. Wenn das Forum hierfür unpassend ist, gibt es ein besseres? Wenn ja welches? Vielen dank für die Hilfe schonmal im Vorraus MFG Wolfram
  8. Hallo, ich komme einfach nicht weiter. Aufgabe: In einer CVS sind Gruppennamen gelistet. Die Spaltenüberschriften sind benannt mit Gruppe1 und Gruppe2. In jeder Spalte befinden sich ca. 400 Einträge. Nun sollen die Member der Gruppe welche in Spalte "Gruppe1" in Zeile 1 sind in die Gruppe hinzugefügt werden welche in Spalte "Gruppe2" in Zeile 1 eingetragen sind. Soweit so einfach. Leider ist die Schwierigkeit, dass nur die Member aus der Gruppe welche in Spalte "Gruppe1" und Zeile 1 in die Gruppe aus Spalte "Gruppe2" in Zeile 1 eingefügt werden sollen die ein bestimmtes Kriterium erfüllen. Es soll geprüft werden ob die Mailadresse des Gruppenmembers mit einer bestimmten Zeichenfolge beginnt. Dann soll das entsprechende Gruppenmitglied aus der einen Gruppe entfernt werden und der anderen Gruppe hinzugefügt werden. Soweit bin ich bisher: #CSV einlesen $groups=Import-Csv -Delimiter ";" -Path "C:\Scripte\2019\Gruppen\VS_alle_test.csv" #Gruppen bearbeiten foreach ($group in $groups) { $gmember= Get-ADGroupMember $group.Gruppe1 } foreach ($member in $gmember) { $user = Get-Aduser $member Add-ADGroupMember -identity '$groups.Gruppe2' -Member $user.UserPrincipalName = "abc*@Mailadresse" } selbst wenn ich im letzten Teil auf das Filtern nach UserPrincipalname (enthält die Mailadresse = geprüft mit Inhalt $User) verzichte und nur dieses verwende: #CSV einlesen $groups=Import-Csv -Delimiter ";" -Path "C:\Scripte\2019\Gruppen\VS_alle_test.csv" #Gruppen bearbeiten foreach ($group in $groups) { $gmember= Get-ADGroupMember $group.Gruppe1 } foreach ($member in $gmember) { $user = Get-Aduser $member Add-ADGroupMember -identity '$groups.Gruppe2' -Member $user } kommt es zu diesen Fehlern: Könnt Ihr mir dabei helfen ? Gruß
  9. Hallo! Ich suche einen Weg um via Powershell für einen Benutzer einen Ordner in dessen Online-Archiv anlegen zu können. Habt ihr diesbezüglich schon Erfahrungen gemacht? Danke für eure Hilfe. Lg Jochen
  10. Hallo zusammen, hier meine erste Frage: Ich nutze setacl um Fileberechtigungen zwischen 2 Domänen zu kopieren, ich nutze den Befehl SetACL.exe -on \\server1\share\users -ot file -actn domain -rec cont_obj -dom "n1:domain1;n2:domain2;da:repldom;w:dacl" Das klappt auch super, ABER wenn wenn im Quellverzeichnis eine Gruppe oder Benutzer "Full control" Berechtigung hat (applies to - this folder,subfolders and files) wird diese Berechtigung nicht komplet kopiert. Das Ergebis ist, das die Berechtigung kopiert wird aber nur als (applies to - this folder) , wenn ich das recht "Full Control" im Quelleverzeichnis entferne klappt das kopieren ohne Probleme. Ich habe das bei mehreren Verzeichnisse probiert und konnte das Verhalten immer bestätigen. Hat einer eine Idee wie ich es schaffe das die Berechtigung "Fill Control" kopiert bekomme? Ergänzung: Beispiel \\server1\userhome\user1\ auf user1 hat der Benutzer domain1\user "full control" (aplies to - this folder, subfolders and files) Ich lasse das script auf \\server1\userhome\user1 laufen dann hat der Benutzer domain2\user zwar "full control" aber nur (aplies to - this folder) und nicht mehr zu den subfolders und files. Gruß Schorsch
  11. Hallo liebe Community Habe gerade angefangen, mit Powershell herumzuexperimentieren und es macht Spass. Allerdings stehe ich jetzt etwas an. Ich möchte von allen Benutzern aus dem gesamten AD, die einer bestimmten Gruppe angehören, bestimmte Attribute auslesen. Bis jetzt habe ich folgenden Code: $SearchBase = 'OU=Standard,OU=User,OU=xxx,OU=xxxx,DC=xxxx,DC=xxxx' Get-ADUser -Filter * -SearchBase $SearchBase -properties Title,department,telephonenumber,mobile,mail Das funktioniert eigentlich grundsätzlich. Ich würde den Script aber gerne etwas optimieren... und zwar möchte ich nur die Accounts aufgeführt haben, die in der Gruppe "XY" sind. Wie baue ich meinen Code entsprechend um? Habe es so versucht: Get-ADUser -Filter * -SearchBase $SearchBase | Where-Object {$_.MemberOf -contains "GruppeXY"} Wenn mich diesen Starte... passiert nix. Der Cursor springt auf die nächste Zeile und gut ist, keinen Fehler oder ähnliches. Was mache ich falsch? Und dann hätte ich noch eine zweite kleine Frage:. Wenn ich ganz normal den Get-ADUser-Befehl starte ohne spezielle Params, dann kriege ich ja einen bestimmten Datensatz mit vordefinierten Attributen raus (DistinguishedName, GivenName etc.). Ich möchte aber jedes Attribut selbst bestimmten was ausgelesen wird. Das Ziel ist, nur die Daten zu bekommen die ich auch weiterverarbeiten möchte. Danke für Eure Hilfe und bis später :-) Beste Grüsse - quen
  12. Hi, ich bin grade dabei WMI Filter per GPO zu erstellen. Dabei nutze ich größtenteils dieses Script bzw. die relevanten Parts daraus: http://www.jhouseconsulting.com/2014/06/09/script-to-create-import-and-export-group-policy-wmi-filters-1354 Nachdem ich die CSV und den Import angepasst habe funktioniert das Script auch bis auf das der Namespace sowie die Abfrage im WMI Filter erstellt wurden. Daraufhin habe ich einen WMI Filter von Hand angelegt und mir die relevanten Parts im ADSI Editor angesehen. Dabei sieht der msWMI-Parm2 folgendermaßen aus <Zahl1>;<Zahl2>;<Zahl3>;<Zahl4>;WQL;<Namespace>;<Query>. Das Script importiert nach meinen Anpassungen lediglich <Namespace>;<Query>. Jetzt die Frage: Gibt es eine Info, wie sich die vorausstehenden Zahlen generieren bzw. was die tun? Erste Tests von mir haben ergeben, dass Zahl1 eigentlich immer 1, Zahl2 immer 3 und Zahl3 immer 10 ist. Die vierte Zahl ändert sich je nach Filter: Win32_ComputerSystem -> Zahl4 53 Win32_OperatingSystem -> Zahl4 57 Win32_OperatingSystemSKU -> Zahl4 244 Der Vollständigkeithalber hier noch der Code mit meinen Anpassungen und eine Beispiel CSV (Wobei mir hier jetzt auffällt ich habe eher die CSV wie den Code angepasst): # http://www.jhouseconsulting.com/2014/06/09/script-to-create-import-and-export-group-policy-wmi-filters-1354 $key = Get-Item HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -ErrorAction SilentlyContinue if (!$key) { New-Item HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -ItemType RegistryKey | Out-Null } $kval = Get-ItemProperty HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -Name "Allow System Only Change" -ErrorAction SilentlyContinue if (!$kval) { New-ItemProperty HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -Name "Allow System Only Change" -Value "1" -PropertyType DWORD | Out-Null } else { Set-ItemProperty HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -Name "Allow System Only Change" -Value "1" | Out-Null } $WMIFilters = Import-Csv "C:\install\GPO\DefaultWMIFilters.csv" -Delimiter "," $msWMIAuthor = $($env:USERDOMAIN + "\" + $env:USERNAME) foreach ($WMIFilter in $WMIFilters) { $WMIGUID = [string]"{"+([System.Guid]::NewGuid())+"}" $WMIDN = "CN=" + $WMIGUID + ",CN=SOM,CN=WMIPolicy,CN=System," + $DomainDN $WMICN = $WMIGUID $WMIdistinguishedname = $WMIDN $WMIID = $WMIGUID $now = (Get-Date).ToUniversalTime() $msWMICreationDate = ($now.Year).ToString("0000") + ($now.Month).ToString("00") + ($now.Day).ToString("00") + ($now.Hour).ToString("00") + ($now.Minute).ToString("00") + ($now.Second).ToString("00") + "." + ($now.Millisecond * 1000).ToString("000000") + "-000" $msWMIName = $WMIFilter.Name $msWMIParm1 = $WMIFilter.Description + " " $msWMIParm2 = $WMIFilter.Filter $array = @() $SearchRoot = [adsi]("LDAP://CN=SOM,CN=WMIPolicy,CN=System," + $DomainDN) $search = New-Object System.DirectoryServices.DirectorySearcher($SearchRoot) $search.Filter = "(objectclass=msWMI-Som)" $results = $search.FindAll() ForEach ($result in $results) { $array += $result.properties["mswmi-name"].item(0) } if ($array -notcontains $msWMIName) { $SOMContainer = [adsi]("LDAP://CN=SOM,CN=WMIPolicy,CN=System," + $DomainDN) $NewWMIFilter = $SOMContainer.create('msWMI-Som',"CN="+$WMIGUID) $NewWMIFilter.put("msWMI-Name",$msWMIName) $NewWMIFilter.put("msWMI-Parm1",$msWMIParm1) $NewWMIFilter.put("msWMI-Parm2",$msWMIParm2) $NewWMIFilter.put("msWMI-Author",$msWMIAuthor) $NewWMIFilter.put("msWMI-ID",$WMIID) $NewWMIFilter.put("instanceType",4) $NewWMIFilter.put("showInAdvancedViewOnly","TRUE") $NewWMIFilter.put("distinguishedname",$WMIdistinguishedname) $NewWMIFilter.put("msWMI-ChangeDate",$msWMICreationDate) $NewWMIFilter.put("msWMI-CreationDate",$msWMICreationDate) $NewWMIFilter.setinfo() } } ###### CSV ###### Name,Description,Filter PDC Domain Controller,PDC Rolleninhaber,1;3;10;53;WQL;root\CIMv2;Select * from Win32_ComputerSystem where DomainRole=5; Restliche Domain Contrller,Alle anderen Domain Controller,1;3;10;53;WQL;root\CIMv2;Select * from Win32_ComputerSystem where DomainRole=4; Alle Domain Controller,Alle Domain Controller,1;3;10;57;WQL;root\CIMv2;Select * from Win32_OperatingSystem where ProductType="2"; Alle Mitgliedsserver,Alle Mitgliedsserver,1;3;10;57;WQL;root\CIMv2;Select * from Win32_OperatingSystem where ProductType="3"; Alle Clients,Alle Client PCs,1;3;10;57;WQL;root\CIMv2;Select * from Win32_OperatingSystem where ProductType="1"; Edit: Grade ein anderes Script gefunden (https://gallery.technet.microsoft.com/scriptcenter/f1491111-9f5d-4c83-b436-537eca9e8d94), wo die ersten 3 Zahlen immer fix "1;3;10" sind und die vierte Zahl nur die Länge der Abfrage ist. Das wäre ja zu einfach... Gruß Jan Hier noch das "Teilergebnis" inkl. verknüpfen der GPO mit dem WMI Filter: $DomainDN = (Get-ADDomain).DistinguishedName # http://www.jhouseconsulting.com/2014/06/09/script-to-create-import-and-export-group-policy-wmi-filters-1354 $key = Get-Item HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -ErrorAction SilentlyContinue if (!$key) { New-Item HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -ItemType RegistryKey | Out-Null } $kval = Get-ItemProperty HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -Name "Allow System Only Change" -ErrorAction SilentlyContinue if (!$kval) { New-ItemProperty HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -Name "Allow System Only Change" -Value "1" -PropertyType DWORD | Out-Null } else { Set-ItemProperty HKLM:\System\CurrentControlSet\Services\NTDS\Parameters -Name "Allow System Only Change" -Value "1" | Out-Null } $WMIFilters = Import-Csv "C:\install\GPO\DefaultWMIFilters.csv" -Delimiter "," $msWMIAuthor = $($env:USERDOMAIN + "\" + $env:USERNAME) $WMIObjects = @() foreach ($WMIFilter in $WMIFilters) { $tempWMIObject = New-Object PSObject $WMIGUID = [string]"{"+([System.Guid]::NewGuid())+"}" $WMIDN = "CN=" + $WMIGUID + ",CN=SOM,CN=WMIPolicy,CN=System," + $DomainDN $WMICN = $WMIGUID $WMIdistinguishedname = $WMIDN $WMIID = $WMIGUID $now = (Get-Date).ToUniversalTime() $msWMICreationDate = ($now.Year).ToString("0000") + ($now.Month).ToString("00") + ($now.Day).ToString("00") + ($now.Hour).ToString("00") + ($now.Minute).ToString("00") + ($now.Second).ToString("00") + "." + ($now.Millisecond * 1000).ToString("000000") + "-000" $msWMIName = $WMIFilter.Name $msWMIParm1 = $WMIFilter.Description + " " $msWMIParm2 = $($WMIFilter.Filter1 + $WMIFilter.Filter2.Split(";")[3].Length + $WMIFilter.Filter2) $array = @() $SearchRoot = [adsi]("LDAP://CN=SOM,CN=WMIPolicy,CN=System," + $DomainDN) $search = New-Object System.DirectoryServices.DirectorySearcher($SearchRoot) $search.Filter = "(objectclass=msWMI-Som)" $results = $search.FindAll() ForEach ($result in $results) { $array += $result.properties["mswmi-name"].item(0) } if ($array -notcontains $msWMIName) { $SOMContainer = [adsi]("LDAP://CN=SOM,CN=WMIPolicy,CN=System," + $DomainDN) $NewWMIFilter = $SOMContainer.create('msWMI-Som',"CN=" + $WMIGUID) $NewWMIFilter.put("msWMI-Name",$msWMIName) $NewWMIFilter.put("msWMI-Parm1",$msWMIParm1) $NewWMIFilter.put("msWMI-Parm2",$msWMIParm2) $NewWMIFilter.put("msWMI-Author",$msWMIAuthor) $NewWMIFilter.put("msWMI-ID",$WMIID) $NewWMIFilter.put("instanceType",4) $NewWMIFilter.put("showInAdvancedViewOnly","TRUE") $NewWMIFilter.put("distinguishedname",$WMIdistinguishedname) $NewWMIFilter.put("msWMI-ChangeDate",$msWMICreationDate) $NewWMIFilter.put("msWMI-CreationDate",$msWMICreationDate) $NewWMIFilter.setinfo() $tempWMIObject | Add-Member -MemberType NoteProperty -Name Name -Value $msWMIName $tempWMIObject | Add-Member -MemberType NoteProperty -Name CN -Value $WMIGUID } $WMIObjects += $tempWMIObject } Get-ADObject -Identity $(Get-GPO -Name "C_PDC_Zeitserver").Path | Set-ADObject -Add @{gPCWQLFilter=$("[" + $env:USERDNSDOMAIN + ";" + $(($WMIObjects | ? Name -eq "PDC Domain Controller").CN) + ";0]")} Und die CSV: Name,Description,Filter1,Filter2 PDC Domain Controller,PDC Rolleninhaber,1;3;10;,;WQL;root\CIMv2;Select * from Win32_ComputerSystem where DomainRole=5; Restliche Domain Contrller,Alle anderen Domain Controller,1;3;10;,;WQL;root\CIMv2;Select * from Win32_ComputerSystem where DomainRole=4; Alle Domain Controller,Alle Domain Controller,1;3;10;,;WQL;root\CIMv2;Select * from Win32_OperatingSystem where ProductType="2"; Alle Mitgliedsserver,Alle Mitgliedsserver,1;3;10;,;WQL;root\CIMv2;Select * from Win32_OperatingSystem where ProductType="3"; Alle Clients,Alle Client PCs,1;3;10;,;WQL;root\CIMv2;Select * from Win32_OperatingSystem where ProductType="1";
  13. Hallo zusammen, ich bastel grad in der Testumgebung ein bischen am WSUS rum und bin auf folgendes Script gestossen. https://gallery.technet.microsoft.com/scriptcenter/WSUS-DELAY-AUTO-APPROVALS-ba0ea840/view/Discussions Hat das schon mal jemand implementiert bzw. wie ist das genau anzuwenden. Scheinbar erstellt das Script keine Tast das es wiederholt ausgeführt wird. Muss Auto Approve am WSUS deaktiveren werden? Habe mich schon wund geGooglet aber ohne erfolg. Danke im Voraus. LG uzwuz
  14. Guten Tag Community, meine Firma hat einen Server auf dem Profile für Spracherkennung gespeichert werden. Da wir einen Providerwechsel vornehmen müssen, habe ich die Aufgabe alle Sprachprofilordner vom alten Server auf den neuen mit einem Skript zu kopieren. An sich ja kein Problem mit Robocopy. Aber ich soll nur die Oberste Strukturebene kopieren, d.h. nur die Namen aller Sprachprofilordner ohne jegliche Dateien, Unterordner und deren Dateien. Sage ich Robocopy, dass es nur die Obserste Ebende kopieren soll, überspringt er diese jedoch, wahrscheinlich weil sie keine Dateien enthalten. Hat jemand vllt einen anderen Lösungsansatz für mich? Ich dachte daran mit Get-ChildItem die Namen der Ordner auszulesen. Aber wie kann ich diese Namen als neue Ordner Namen vergeben ? Das bekomme ich nicht gebacken.
  15. Hallo zusammen, habe ein PowerShellskript erstellt indem der Benutzer 2 Auswahlmöglichkeiten hat. $env = New-Object -COMObject "Microsoft.SMS.TSEnvironment" ... env.value("checked") = "true" Je nachdem was angeklickt wird, steht in der TS Variablen checked true oder false drin. Füge ich im SCCM in der Task Sequence die Bedingung: Tasksequencevariable checked ist gleich "true" Läuft die Task Sequence ganz normal weiter! Ich sehe gerade meinen Fehler nicht :(
  16. Hallo zusammen, ich sehe gerade den Wald vor lauter Bäumen nicht und brauche mal eine Klaps auf den Hinterkopf. Just nehme ich mir ein älteres Skriptchen (Gruppenwechsel von Usern per PowerShell) vor und passe es auf den neuen Job an. An einer Stelle möchte ich alle Gruppen bis auf "Domänen-Benutzer" entfernen. @(Get-ADPrincipalGroupMembership -Identity htestheimer | Where-Object {$_.Name -ne 'Domänen-Benutzer'} ) Wenn ich das so mit einem echten Benutzer (htestheimer) auf der Konsole eingebe, dann bekomme ich alle Gruppen zurück, in welcher der Benutzer ist ohne die Gruppe "Domänen-Benutzer". Innerhalb des Skripts ist bei $entferne = @(Get-ADPrincipalGroupMembership -Identity $ziel | Where-Object {$_.Name -ne 'Domänen-Benutzer'} ) die Gruppe "Domänen-Benutzer" aber immer im Array mit drin. Die Variable $ziel ist auch beim Haltepunkt mit 'htestheimer' befüllt. Für mich sind beide Syntax richtig. Warum bekomme ich trotzdem unterschiedliche Ergebnisse? Danke vorab 4077
  17. Hallo, liebe Comm, ich bin kompletter Newbie und beiße mir grad die Zähne an einer AD-Abfrage aus. Ich möchte diverse Werte in ein csv bzw. in Spalten an Excel übergeben. Das habe ich inzwischen hinbekommen mit export-csv und der Option Delimiter. Allerdings erscheinen Umlaute und Sonderzeichen nicht korrekt. Ich habe jetzt den Parameter encoding gefunden. Hänge ich diesen jedoch an, dann zerschießt es mir die Spalten in der Datei - alles steht ungetrennt hintereinander weg. Zur Verdeutlichung: Get-ADUser -filter * -properties name, undsoweiter | Export-Csv 'C:\temp\test.xls' -Delimiter "`t" ----> funktioniert mit Spalten, allerdings Umlaute etc. falsch dargestellt (z.B. ä ist ? ) Get-ADUser -filter * -properties name, undsoweiter | Export-Csv 'C:\temp\test.xls' -Delimiter "`t" -encoding utf8 --> Umlaute werden korrekt dargestellt als ä,ö,ü, aber es gibt keine Spalten mehr; alles steht hintereinander weg Wo liegt mein Fehler? Wie beeinflusst der eine Parameter den Anderen? Vielen Dank für Hilfe, Cleo
  18. Hallo zusammen, ich habe mal wieder zwei kleine Aufgaben die ich mit Powershell realisieren möchte. Folgende Situation: Ich habe ca. 145 Rechner von denen ich eine Datei kopieren will, die bei allen Rechnern im gleichen Pfad liegt. Ich hab das soweit schonmal mit dem Copy-Item gebaut jedoch kommt es mir so vor als würde es auch schöner gehen als jeden Rechner in eine eigene Variable zu packen. Da die kopierten Dateien im gleichen Share landen und jeweils mit Rechnername benannt werden sollen. Hier mal mein Ansatz: $Rechner1="\\XXX-X" $Speicherort1="\\SERVER\SHARE\Unterordner\$Rechner1.Datei.ini" Copy-Item -Path "$Rechner1.FQDN\c$\xxx\xxx\Datei.ini" -Destination $Speicherort1 $Rechner2="\\YYY-Y" $Speicherort2="\\SERVER\SHARE\Unterordner\$Rechner2.Datei.ini" Copy-Item -Path "$Rechner2.FQDN\c$\xxx\xxx\Datei.ini" -Destination $Speicherort2 ... ... Wäre toll wenn mir da jemand einen evt. besseren Weg zeigen kann. Zusätzlich dazu muss ich ein separates Skript erstellen mit dem ich die LastBootUpTime von mehreren Rechnern abfrage. Dazu habe ich auch etwas geschrieben was mir allerdings immer nur von einer Maschine die LastBootUpTime liefert: $Rechner = "PC-XY.FQDN" $os = Get-WmiObject -ComputerName $Rechner -Class win32_operatingsystem $os.ConvertToDateTime($os.LastBootUpTime) bei diesem Skript würde ich nach meinem Verständnis einfach mehrere Rechner in die Variable mit reinschreiben jedoch kommt dann der Fehler: "Get-WmiObject : Der RPC-Server ist nicht verfügbar. 0x8007068A" Wenn ich den Rechner jedoch einzelnd abfrage funktioniert das Skript. Kann mir da evt. jemand sagen wo der Fehler liegt? Vielen Danke schon jetzt für die Hilfe Gruß Niklas
  19. Hallo Zusammen, mit fehlt leider die Erfahrung um folgendes Script performanter zu machen. Leider finde ich auch nicht wirklich etwas im Netz dazu. Generell liegt das Problem wahrscheinlich auch in der Größe der Log Datei, die durchsucht wird. Die Datei ist ca. 40GB groß. In der Adressen.txt sind ca. 1000 E-Mail Adressen enthalten. Es muss geprüft werden, welche E-Mail Adresse in dem 40GB großen Dokument vorhanden ist. Wenn es vorhanden ist, soll im Output-Dokument hinter der E-Mail ein "Ja" geschrieben werden. Vielen Dank im Voraus! Gruß Tim $logFolder = "H:\logs.txt" $adressen= Get-Content H:\Adressen.txt $ergebnis = @() foreach ($adr in $adressen){ $suche = Select-String -Path $logFolder -Pattern "\[\(\'from\'\,.*$adr.*\'\)\]" -List $aktiv= $false $adr if ($suche){ $aktiv = $true } if ($aktiv -eq $true){ $ergebnis+=$adr + ";Ja" } else{ $ergebnis+=$adr + ";Nein" } } $ergebnis |Out-File H:\output.txt
  20. Wie im Screenshot zu sehen ist, findet der Get-Mailboxpermission -Befehl einen eingetragenen Vertreter(eine Gruppe), Remove-Mailboxpermission allerdings nicht Hat jmd eine Idee Schwarz zensiert ist der Firmenname, Rot ein Produktname EX_ROT_Import ist die Gruppe die entfernt werden soll, ROT_Import ist das Postfach
  21. Hallo zusammen, ich bin gerade dabei ein Powershell-Skript zur Erstellung eines Failover-Clusters zu schreiben. Bevor man die Cluster-Rolle anlegt, muss ja das Computerobjekt vom Cluster, Berechtigungen zum erstellen von Computerobjekten in der eigenen OU bekommen. An diesem Punkt komme ich gerade nicht wieder. Wie kann ich die Berechtigungen per Powershell setzen? Danke schon einmal
  22. Hallo zusammen, bin nicht im Bereich des Skriptens tätig und suche daher Hilfe. Ich habe hier ein Solar-Log was mir über einen Curl Befehl die Werte ausspuckt, die per JSON bereitgestellt werden. Das Ganz sieht so aus: curl -X POST -H "Content-Type: application/json" -d '{\"801\":{\"170\":null}}' 192.168.1.10/getjp >c:\export.txt Als Ausgabe erhalte ich dann: {"801":{"170":{"100":"13.02.19 15:18:30","101":15437,"102":15859,"103":233,"104":594,"105":165191,"106":44701,"107":920606,"108":1907054,"109":426813616,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":82095}}} Dabei steht zum Beispiel die Variable "100" für Datum + Uhrzeit, die Variable "101" für die aktuelle Leistung usw. Die Ausgabe kann ich natürlich einfach und direkt als .txt, .csv oder .xml speichern. So weit so gut. Die ausgegebenen Werte möchte ich gerne in weiterverarbeiten und überwachen. Eine Möglichkeit ist das Ausgabe-Ergebnis umzuwandeln. Ein Skript was aus obigem Ergebnis Werte rauszieht und als weitere .bat speichert wäre hilfreich. Eine Batch die per echo den Wert und Bezeichnung ausspuckt würde schon reichen. Das Ergebnis sollte so aussehen (der : ist in diesem Falle mein Trennzeichen bei der Auswertung, die 15437 lasse ich mal so stehen uns sollte natürlich also aktueller Wert der Variable übergeben werden, müsste in der Ausgabe bat allerdings numerisch stehen.) echo 15437:Leistung in Watt Ein Skript was mir aus der Ausgabedatei eine solche weitere .bat mit dem Ergenis erzeugt würde mein Problem bereits lösen. Grundsätzlich: Die Abfrage mit curl kann ich nicht weiter runterbrechen, muss also alle Werte abfragen. Man könnte den Befehl/das Skript aber auch so erweitern das letztlich direkt im ersten Skript bei der Curl Abfrage per echo zum Beispiel eben "15437:Leistung in Watt" ausgegegen wird und sich weitere .Batch-Dateien erspart bleiben. Eine Hilfe wäre auch das ganze mit Powershell zu machen, wobei es da kein Curl gibt sondern das Invoke-Restmethod zu benutzen. Das kenne ich leider gar nicht. Da das leider nicht mein Fachgebiet ist hoffe ich hier auf Unterstützung. Danke!
  23. Hi, ich habe folgendes Problem. Ich würde gerne bei dem unten stehenden Registry Key die Variable auslesen HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId Variable 1803. Sollte 1803 vorhanden sein dann würde ich gerne ein Programm starten lassen. Da ich noch ziemlich neu im Powershell Umfeld bin hoffe ich jemand kann mir helfen.
  24. Hallo zusammen, ich stehe hier vor einer Frage und weiß nicht, wie ich sie gelöst kriege, weswegen ich gehofft hatte, dass einer von Euch mich vielleicht aufschlauen kann. Als Beispiel: der Befehl Get-NetAdapter funktioniert, wie eine Googlesuche ergab, erst ab Windows 8 / Server 2012. Jetzt frage ich mich: wie findet man denn raus, welche Mindestversion von Powershell man für einen Befehl braucht? Steht diese Angabe irgendwo? Ich meine mich zu erinnern, dass auf der TechNet-Seite mal unter den Modulen / Befehlen stand "Applies to: Version X, Version Y, ...", aber das scheint ja nicht mehr der Fall zu sein. Danke vorab!
  25. Hallo, ich habe eine kleines Problem, wir benutzen bei uns Citrix und Timago ich kenne mich etwas mit Programmieren aus C,C++ aber 0 mit PowerShell. Das Problem ist, das wir mit 2 Bildschirmen nicht Abreiten können. Angeschlossen per HDMI und DisplayPort. 1 Display funktioniert ohne Probleme. Jetzt habe ich das Problem, dass wenn ich mich als Admin an meinem Tiny anmelde (Lenovo ThinkCentre) beide Bildschirme funktionieren, als normaler User aber nicht. Ich habe eine neue Datei bekommen, die es beheben soll, nur die Datei hat ein paar Fehler. Wenn ich Sie in den richtigen Ordner hineinschiebe startet der PC aber der Bildschirm bleibt Schwarz und ich kann nur die Maus sehe. Deswegen hoffe ich das ihr mir helfen könnt. Ich habe es mal Bearbeitet, denn im Grunde treten die Fehler nur in diesem Bereich auf: function Load-Form { <# .SYNOPSIS Loads XAML-Form .DESCRIPTION xxx .PARAMETER Path A string containing the path to the XAML file. .EXAMPLE Load-Form -Path "C:\Path\to\file.xaml" #> [CmdletBinding()] Param( [Parameter(Mandatory=$true)] [string] $Path ) [XML]$XAML = Get-Content ($Path) $XAML.Window.RemoveAttribute(x:Class) $Reader = New-Object System.Xml.XmlNodeReader $XAML $InstallerMainForm = [Windows.Markup.XamlReader]::Load($Reader) $XAML.SelectNodes("//*[@Name]") | ForEach-Object { Set-Variable -Name "WPF$($_.Name)" -Value $Form.FindName($_.Name) } return $InstallerMainForm } Die Errors: In \\hn0vfil001.experimenta.science\REDIRECTION$\User\Desktop\start-elock.ps1:564 Zeichen:31 + $XAML.Window.RemoveAttribute(x:Class) + ~ ")" fehlt in einem Methodenaufruf. In \\hn0vfil001.experimenta.science\REDIRECTION$\User\Desktop\start-elock.ps1:564 Zeichen:31 + $XAML.Window.RemoveAttribute(x:Class) + ~~~~~~~ Unerwartetes Token "x:Class" in Ausdruck oder Anweisung. In \\hn0vfil001.experimenta.science\REDIRECTION$\User\Desktop\start-elock.ps1:543 Zeichen:20 + function Load-Form { + ~ Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition. In \\hn0vfil001.experimenta.science\REDIRECTION$\User\Desktop\start-elock.ps1:564 Zeichen:38 + $XAML.Window.RemoveAttribute(x:Class) + ~ Unerwartetes Token ")" in Ausdruck oder Anweisung. In \\hn0vfil001.experimenta.science\REDIRECTION$\User\Desktop\start-elock.ps1:573 Zeichen:2 + } + ~ Unerwartetes Token "}" in Ausdruck oder Anweisung. + CategoryInfo : ParserError: (:) [], ParseException + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall Die Datei in ps1:
×
×
  • Create New...