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 142 results

  1. Hallo Zusammen, ich kenne mich mit PowerShell nicht wirklich aus. Folgende soll passieren bzw. funktioniert soweit gut PDF Dateien werden zur weiteren Verarbeitung in TIFF konvertiert (GHostscript) und in bestimmten Ziel abgespeichert. Das PDF selbst wird dann verschoben, soweit ganz gut. Dateinamen sind aktuell z.b. 1234567_name_vorname.pdf Sobald die Bearbeitung fertig ist, erhält diese ein x vor dem Namen x1234567_name_vorname.pdf und soll in ein tiff konvertiert werden. Nun soll aber folgendes passieren wo ich nicht weiter komme -> die zu erstellende TIFF Datei soll einen bestimmten Aufbau des Namen erhalten. Datum des letzten Zugriffs des PDF _ die 7 Stellige Nummer _ das Wort "prüfung" _ name_vorname.tif z.b. 09072020_1234567_prüfung_name_vorname.tiff bisher sieht das Script wie folgt aus. es werden alle PDF´s des Verzeichnis als TIFF erstellt und verschoben. vielleicht kann mir hier jemand helfen. #Pfad Ghostscript $tool = "C:\Sicherung_Stick\Tools\ghostscript\bin\gswin64c.exe" #Ausleseverzeichnis PDF $inputDir = "X:\513214\7. Scan Posteingang\" #Pfad für erledigt $outputDirPDF = "X:\513214\7. Scan Posteingang\ERLEDIGT\" #Pfad für TIFF $outputDir = "X:\513214\TIFF zum einlesen\" $pdfs = get-childitem $inputDir -recurse | where name -like "x*.pdf" foreach($pdf in $pdfs) { $tif = $outputDir + $pdf.BaseName + ".tif" $pdf_to_move = $inputDir + $pdf.BaseName + ".pdf" if(test-path $tif) { "tif file already exists " + $tif } else { 'Processing ' + $pdf.Name $param = "-sOutputFile=$tif" & $tool -q -sPageList=1 -dNOPAUSE -sDEVICE=tiffg4 $param -r600 $pdf.FullName -c quit } # Datei verschieben Move-Item $pdf_to_move $outputDirPDF } EXIT
  2. Hallo zusammen, ich habe mal eine Frage zum Thema Powershell und Get-ChildItem und match. Ich habe mehrere Dateien, welche mit .csv enden. Aus diesen möchte ich bestimmte Dateinamen mit bestimmten Merkmalen identifizieren und umbenennen. Hier mal drei Beispiele: TEST.BARN.G1T3F.02983100.B200225.T014508.X02.CSV TEST.BARN.G1B53.02983104.D200225.T014508.C02.0400.CSV TEST.BARN.G9T3F.02981185.B200225.T014508.X02.CSV Ich möchte Dateinamen identifizieren und umbenennen die z.B. das Merkmal G1T3F und 3100 haben. Dies mache ich wie folgt: Get-ChildItem $DTCC_ROOT | where { $_.Name -match "G[0-9]{1}T[A-Z0-9]{2}" -and $_.Name -match "31[0-9]{2}" } | Rename-Item -NewName { $_.name -Replace '\.CSV$', '.XML' } Da das Merkmal G1T3F variieren kann, ebenso 3100 matche ich wie folgt: G1T3F mit "G[0-9]{1}T[A-Z0-9]{2} und 3100 mit "31[0-9]{2}"" Wenn beide Bedingungen erfüllt sind, soll dewr Dateiname von der Endung .csv nach .xml umbenannt werden. Leider funktioniert das nicht. Es wird z.B. auch der Dateiname TEST.BARN.G9T3F.02981185.B200225.T014508.X02.CSV umbenannt. Kann mir jemand erklären warum es so nicht funktioniert und hätte einen Lösungsvorschlag ?
  3. Hallo Zusammen, ich verzweifle gerade etwas. Zur Situation: Ich habe ein Script das unter anderem AD Gruppen anlegt, das funktioniert soweit auch alles, jetzt kam ich aber auf die Idee das anlegen der Gruppen dynamisch über eine CSV datei einzulesen. Auch das funktioniert soweit, ich habe aber einen Wert der ein entweder als Text verarbeitet werden soll oder als Variable die ich oben im Script festgelegt habe. Betroffener Teil im Script: Import-Csv -Path \\dc01-2019\shares\Baulogistik\Baustellen\Scriptdaten\Gruppen_ADD.csv -Delimiter ";" -encoding utf8 | Foreach{ $Name = $_.Name $SamAccountName = $_.SamAccountName $GroupCategory = $_.GroupCategory $GroupScop = $_.GroupScop $DisplayName = $_.DisplayName $Path = $_.Pfad If($_.Description -like "$*") {$Description = %{$_.Description}} Else {$Description = $_.Description} Write-Host $Description New-ADGroup -Name $Bauvorhaben$Name -SamAccountName $Bauvorhaben$SamAccountName -GroupCategory $GroupCategory -GroupScope $GroupScop -DisplayName $Bauvorhaben$DisplayName -Path $Path -Description $Description } Dazugehörige csv: Name SamAccountName GroupCategory GroupScop DisplayName Pfad Description Security Global OU=Bauvorhaben,OU=Baulogistik,OU=Benutzergruppen,OU=Benutzerorganisation,DC=bloodspiret,DC=ddns,DC=net $Baustellenname _Lesen _Lesen Security Global _Lesen OU=Bauvorhaben,OU=Baulogistik,OU=Benutzergruppen,OU=Benutzerorganisation,DC=bloodspiret,DC=ddns,DC=net Test _Schreiben _Schreiben Security Global _Schreiben OU=Bauvorhaben,OU=Baulogistik,OU=Benutzergruppen,OU=Benutzerorganisation,DC=bloodspiret,DC=ddns,DC=net $Baustellenname _Ändern _Ändern Security Global _Ändern OU=Bauvorhaben,OU=Baulogistik,OU=Benutzergruppen,OU=Benutzerorganisation,DC=bloodspiret,DC=ddns,DC=net $Baustellenname _Zuko _Zuko Security Global _Zuko OU=Bauvorhaben,OU=Baulogistik,OU=Benutzergruppen,OU=Benutzerorganisation,DC=bloodspiret,DC=ddns,DC=net $Baustellenname Frage: wie verklickere ich der Powershell beim Festlegen der Variable $Description das der den Wert $Baustellenname als die oben angelegte Variable interpretieren soll und mir in der AD nicht '$Baustellenname' in die Description schreibt? Gruß Bloodspiret
  4. Hallo, ich habe den Auftrag bekommen ein script zu schreiben welches über Powershell auf mehreren Domänen, Gruppen und am Ende evtl. sogar bestimme User anlegen soll. Also jedes mal wenn das script ausgeführt wird, soll erstmal auf jeden Fall eine Gruppe erstellt werden. Ich muss das ganze wahrscheinlich gleich in der Produktivumgebung ausführen. Jetzt würde ich euch doch bitten mir mal auf die Finger zu schauen. Das ganze soll über Serverumgebung ausgeführt werden. Das habe ich bisher in die Tasten gehauen: import-module ActiveDirectory import-Module –name GroupPolicy $domain=[System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain() $rootDN = (Get-ADDomainController).DistinguishedName New-ADGroup "Dummy",$rootDN -path "OU="Dummy",DC=domain" -GroupScope Global Das script soll eigentlich gleich alle Domains im Forest schnappen und die Gruppen da anlegen wo sie noch nicht angelegt sind... dafür brauche ich noch eine if abfrage oder? Ich bin in jedem Fall für jede Hilfe Dankbar und wenn ich etwas unklar formuliert habe bitte einfach nachfragen, ich werde schnellst möglich antworten. Viele Grüße, Manticare
  5. Hallo zusammen, beim Versuch NTFS-Berechtigungen auf per Script neu erstellte Ordner zu setzen, bekomme ich beim folgenden Code die ebenfalls folgende Fehlermeldung: # Code ist nicht von mir, copy + paste aus dem Netz $Folder = "\\DomB.local\Daten\Teilnehmer\Name\Nummer" $Gruppe = "DomB.local\ACC_TNG_Nummer_DL" $acl = Get-Acl $Folder $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($Gruppe, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.SetAccessRule($AccessRule) $acl | Set-Acl $Folder Fehlermeldung beim $acl.SetAccessRule($AccessRule): Ausnahme beim Aufrufen von "SetAccessRule" mit 1 Argument(en): "Manche oder alle Identitätsverweise konnten nicht übersetzt werden." Der ausführende User ist in DomA angemeldet und hat in DomB auf dem Ordner die entsprechenden Rechte um die Berechtigungen hinzufügen. Tausche ich den Namen der Gruppe gegen die SID der Gruppe bekomme ich die gleiche Fehlermeldung. Auch wenn ich die DomB.local weglasse kommt die gleiche Fehlermeldung. Trage ich einen Benutzer ein, funktioniert es. Hat jemand noch eine Idee wie man das lösen kann? Vielen Dank schon im Voraus. BTW: Es gibt ja auch von Raimund Andrée File System Security PowerShell Module: https://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85 das hab ich auch ausprobiert, funktioniert nur mit der SID, nicht mit dem Namen der Gruppe. Ja, man kann natürlich die SID zum Namen auslesen, aber es sollte ja eigentlich auch nur mit dem Namen funktionieren. Beim User geht es ja auch.
  6. Sehr geehrte Kolleginnen und Kollegen, Liebe Sysadmins, wir haben ein mittleres Problem. Unser Außendienst wurde mit schönen neuen WLAN Druckern ausgestattet. jaa ich weiß Drucker... So wie jedes schmerzende IT Problem los geht. Die Laptops sind mit SIM Karten ausgestattet und haben einen VPN Client. Zum Problem: Beim Verbinden in das Unternehmen, soll das Mobilfunk Interface verwendet werden. Nun bricht aber beim Herstellen der Verbindung zum Drucker, die VPN Verbindung ab. Unsere VPN disconected also beim verbinden eines belibigen WLAN's, da sich an dem Drucker natürlich kein WAN befindet, läuft der Reconnect in Leere. Wir haben über Set-NetIpInterface schon die Metriken angepasst, leider kein Erfolg. Die Einträge werden gesetzt, hat aber keine Auswirkung welches interface das "logische VPN Interface" hernimmt. Vielelicht habt ihr eine Idee. Grüße
  7. Hallo zusammen, wir richten User per Powershell Skript ein. Die Userinformationen werden von einer Webseite per ssh an ein PS Skript übergeben. Das automatische versenden der Crentials an den Anforder funktioniert aus irgendwelchen Gründen nicht immer. Kann man irgendwie prüfen, ob Send-MailMessage erfolgreich war und wenn nicht nochmal die Mail versenden ? Bisher habe ich folgendes probiert: #Mail versenden $Retrycount = 0 Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ Neuer AD-User: $username +++" -Body $mailbody_admin #Mail ernuet versenden bei Fehler while($Error -eq 1 -and $Retrycount -lt 4) { "Mail an Admins konnte nicht versendet werden. Naechtser versuch in 5 Sekunden..." sleep 5 Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ Neuer AD-User: $username +++" -Body $mailbody_admin $Retrycount = $Retrycount + 1 } if($Retrycount -eq 4) {"Mail an Admins konnte 3 Mal nicht versendet werden"}
  8. Hallo Community, ich bin blutiger Anfänger im Scripting. Ich weiße lediglich etwas fortgeschritteneres Wissen in der SPS Programmierung (Siemens Step 7, TIA) auf. Hintergrund: ein Speichermedium "USB" wird auf einer Testapplikation fest verbaut. Mittels einer Testsoftware werden USB-Ports durchgeschaltet. Das Script soll immer dann ausgeführt werden, wenn ein Portwechsel stattgefunden hat. Dieser Testaufbau wird flexibel an einigen Geräten eingesetzt. Da sich der Laufwerksbuchstabe jedes mal ändert soll ein universell einsetzbares Script erstellt werden um Kommunikation und Datentransfer testen zu können. Ziel meines Scriptes ist es, anhand der DeviceID eines USB-Sticks, den Laufwerksbuchstaben zu ermitteln. Wurde dieser gefunden, soll eine .txt-Datei gelesen werden. Durch intensive Recherche und "Try-and-Error" konnte ich einen kleinen Erfolg verbuchen. Mein Script wird erfolgreich in der PowerShell ISE ausgeführt. #-----------------Start des Scripts------------------------------------# write-output @("Starte Auslesen der angeschlossenen USB Drives") start-sleep -s 3 #-----------------------------------------------------------------------# #-------Wird einmalig benötigt um die DeviceID des USB Sticks manuell auszulesen und in Variablen zu schreiben-------# #-------------------------------------------------------------------------------------------------------------------------------# #------Anzeige aller Laufwerk vom Typ "Entfernbar"---------# <# Get-Volume|where {$_.Drivetype -eq"Removable"} #-----------Filterung von USB Geräte-------------# Get-Disk|where {$_.BusType -eq"USB"}|Select-Object SerialNumber, FriendlyName #------------Filterung von USB-Geräten anhand von Beschreibung und DeviceID----------# Get-WmiObject Win32_USBControllerDevice | ForEach-Object { [wmi]$_.dependent } |where-object -FilterScript {($_.deviceid)}| select-Object description,deviceid #-----------Hier wird der Laufwerkszuordnung ermittelt, es werden alle Pfade von USB Sticks angezeiget. Richtiger Pfad wird manuell in Variable $DUMMYDISKPATH eingetragen-----------# Get-Volume |where {$_.Drivetype -eq"Removable"}|ForEach-Object { $VolObj = $_ $ParObj = Get-Partition | Where-Object { $_.AccessPaths -contains $VolObj.Path } if ($ParObj.DiskId) { $ParObj |Select-Object -Property Diskpath if ($ParObj.DriveLetter) { $ParObj |Select-Object -Property Driveletter }}} <# Get-WmiObject Win32_USBControllerDevice | ForEach-Object { [wmi]$_.dependent } |Where-Object -FilterScript { ($_.deviceid -eq "USBSTOR\DISK&VEN_VERBATIM&PROD_STORE_N_GO&REV_PMAP\0700039A2B79DE49&0") } | select-Object description,deviceid #> #> #---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------# #------------------------------------------------Schleife für Auslesen der USB-Daten-----------------------------------------------------------------# $loopUSBcheck=1 Do{ $TestingDriveUSB = New-Object -TypeName PSObject $DUMMYusbID = "USBSTOR\DISK&VEN_VERBATIM&PROD_STORE_N_GO&REV_PMAP\0700039A2B79DE49&0" #Hier wird die DeviceID des USB Sticks geschrieben $DUMMYDISKPATH = "\\?\usbstor#disk&ven_verbatim&prod_store_n_go&rev_pmap#0700039a2b79de49&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}" #Hier wird der Pfad des USB Sticks aus Diskpath geschrieben $DUMMYletter = $ParObj.DriveLetter $TestingdriveName = Get-WmiObject Win32_USBControllerDevice | ForEach-Object { #Hier wird nach der Art des Sticks mit der DeviceID gesucht [wmi]$_.dependent } |Where-Object -FilterScript { ($_.deviceid -eq $DUMMYusbID) }| select-Object description $TestingdriveID = Get-WmiObject Win32_USBControllerDevice | ForEach-Object { #Hier wird die DeviceID anhand von Statischer Variable gesucht [wmi]$_.dependent } |Where-Object -FilterScript { ($_.deviceid -eq $DUMMYusbID) } | select-Object deviceid $TestingdriveLetter = Get-Volume |where {$_.Drivetype -eq"Removable"}|ForEach-Object { #Hier wird der Laufwerksbuchstabe ermittelt $VolObj = $_ $ParObj = Get-Partition | Where-Object { $_.AccessPaths -contains $VolObj.Path } if ($ParObj.DiskId -eq $DUMMYDISKPATH) { $ParObj |Select-Object -Property Diskpath if ($ParObj.DriveLetter -eq $DUMMYletter) { $ParObj |Select-Object -Property Driveletter }}} #--------------------------------------------------Ausgabe der ermittelten USB-Daten in einer Tabelle-------------------------------------------------------------------------# $TestingDriveUSB|Add-Member -MemberType NoteProperty -Name DeviceID -Value $TestingdriveID $TestingDriveUSB|Add-Member -MemberType NoteProperty -Name Art -Value $TestingdriveName $TestingDriveUSB|Add-Member -MemberType NoteProperty -Name Driveletter -Value $DUMMYletter start-sleep -s 3 echo $TestingDriveUSB $loopUSBcheck $loopUSBcheck++ } Until(($TestingDriveUSB.Driveletter -eq $DUMMYletter) -and ($TestingdriveID.deviceid -eq $DUMMYusbID) -or ($LoopUSBcheck -gt 25)){break} #-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------# #-------------Laufwerk mounten + Laufwerkswechsel-----------------------# write-output @("Greife auf Laufwerk zu.....") start-sleep -s 3 if ($Pfad=$TestingDriveUSB.Driveletter +":\"){ Set-Location $Pfad Write-Output "Teste Laufwerkswechsel..." start-sleep -s 3 Test-Path $Pfad write-output "$Pfad Laufwerkswechsel gültig!"} else {Write-Output "Mounten fehlgeschlagen, da $Pfad und $TestingDriveUSB.Driveletter unterschiedlich"} #----------------------------------------------------------------------# #---------Suche Dateien-------------------------------------------------------------------------------# Echo "Suche Dateien....." start-sleep -s 3 #----------------------Wird benötigt um Dateien in Konsole anzuzeigen---------------------------------# <#Get-ChildItem $Pfad -Recurse | where {$_.Extension -eq".txt"} | % { Write-Output $_.FullName} #> #-----------------------------------------------------------------------------------------------------# if (Get-ChildItem $Pfad -Recurse | where {$_.Extension -eq".txt"} | % { Write-Output $_.FullName} ){ write-output "Suche erfolgreich"} else { write-output "Suche fehlgeschlagen"}{break} #----------------------------------------------------------------------------------------------------# #----------------------------------Lese Datei--------------------------------------------------------# Echo "Starte Auslesen...." start-sleep -s 3 Get-Content -Path $Pfad\HalloWelt.txt if (Get-Content -Path $Pfad\HalloWelt.txt){ Write-Output "Auslesen erfolgreich"} else{ Write-Output "Fehlgeschlagen!"}{break} #---------------------------------------------------------------------------------------------------# #----------------------------Wechsle Laufwerkverzeichnis--------------------------------------------# Set-Location C:\ #---------------------------------------------------------------------------------------------------# read-host -Prompt "exit" Führe ich das Script allerdings direkt in der PowerShell Konsole oder via Verknüpfung aus, wird mir der Laufwerksbuchstabe des Sticks nicht mehr angezeigt. Dadurch kann ich nicht mehr das Verzeichnis wechseln und auch nicht die Datei lesen. Ich hoffe auf höfliche und Konstruktive Kritik sowie Hilfestellung zu meiner Thematik. Sollten noch mehr Infos benötigt werden, lasst es mich gerne Wissen. Vielen Herzlichen Dank Beste Grüße Status_Q
  9. Hallo da man ja über VPN (ohne AlwaysOn) keine Scripts am Client starten kann, dachte ich mir da gibts doch in WPP noch Custom Updates. Aber ich bekomme mal wieder nichts zum laufen. Bei Arguments müsste dann: -Executionpolicy bypass stehen? Hier sind auch kleine Hinweise zu finden: http://package541.rssing.com/chan-8331320/all_p126.html Habs auch als executable probiert: File: %windir%\System32\WindowsPowershell\v1.0\powershell.exe Parameters: -ExecutionPolicy Bypass -WindowStyle Hidden -NonInteractive -NoProfile -File test.ps1 Inhalt ps1: start-process -filepath "notepad.exe"
  10. Moin Leute, hoffe ich bin hier richtig und ihr könnt mir helfen. Versuche gerade in Powershell einzusteigen und ehrlich gesagt finde ich es noch etwas kryptisch. Habe allerdings auch keinerlei Vorkenntnisse was Programmierung anbelangt. Sitze jetzt vor folgendem Problem. Ich möchte über PS alle PCs im Netzwerk nach bestimmten Information abragen. Es handelt sich alles um WMI Abfragen. So z.B. PC Model, S/N, IPconfig usw. Die PCs werden aus einer Liste ausgelesen und sollten dann in einer Tabelle Zeile für Zeile für den jeweiligen PC mit entsprechden Infos ausgegeben werden. Habe es nicht hinbekommen erst einen einzelnen PC mit allen Abfragen anzusteuern. Dementsprechend musste ich die WMI Befehle nacheinander ausführen. Habe jetzt also mehere "Listen". Also eine mit den S/N von allen PCs, eine mit den Modellen usw. Wie bekomme ich diese jetzt so zusammengefügt, dass ich wie oben erwähnt eine Liste habe mit dem PCs und dahinter die entsprechenenden Werte? Momentan habe ich die einzelnen Werte für jeden PC in unterschiedlichen Zeilen. Hoffe ihr habt ein Idee? Habe das, was ich bis jetzt habe mal eingefügt. Danke im voraus $pcs = Get-Content C:\pc.txt test-connection -computername $pcs -count 1 -quiet $cs = $pcs | foreach {get-wmiobject win32_Computersystem -computername $_} | select Name,Model $bios = $pcs | foreach {get-wmiobject win32_bios -computername $_} | select serialnumber $ip = $pcs | foreach {Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE –ComputerName $_} | select IPAddress,DefaultIPGateway,Description,Index $os = $pcs | foreach {get-wmiobject win32_Operatingsystem osarchitecture -computername $_} | select osarchitecture $oscap = $pcs | foreach {get-wmiobject win32_Operatingsystem caption -computername $_} | select $s = $cs + $bios + $ip + $os + $oscap | select name,model,serialnumber,IPAddress,DefaultIPGateway,Description,Index,caption,osarchitecture | format-table
  11. Hallo Leute. Ich bin neu im Scripting. Habe eien Aufgabe bekommen, auf mehreren Servern (hierfür habe ich eine CSV Liste erstellt) erst einen Dients beenden ,bestimmte Datein Namen,für allen Servern aus der CSC liste, aus einer Verzeichnis auslesen, Datein im Text File importieren, Datein auf allen Servern im Verzeichnis löschen und alle Dienste wieder neu starten: das ist meine vorgehensweise: $computerlist = Get-Content c:\Temp\Server.csv foreach ($computer in $computerlist) {Set-Service -Name OssecSvc -Status stopped} foreach ($computer in $computerlist) {Get-ChildItem –Path ‘C:\Program Files (x86)\ossec-agent\rids’ | select Parent,Name | Export-Csv -Path c:\Temp\ossec.txt | Remove-Item -path C:\Program Files (x86)\ossec-agent\rid\*'' -recurse} foreach ($computer in $computerlist) {Set-Service -Name OssecSvc -ComputerName c:\Temp\Server.csv -Status Running }
  12. Bin eigentlich erst bei meinen Anfägnen bei Powershell Skripting und wollte jetzt zur aktuelle PowerShell Core 7 wechseln. Ein Unterschied zur Windows Powershell ist u.a. das PSSnapin fehlt. Im konkreten Fall habe ich bisher für Exchange-Verwaltungsaufgaben für meinen Exchange mit Code Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn wunderbar Exchange-Befehle verwenden können. In der Core-Version ist dies so nicht möglich, ich finde auch sonst nix womit ich dann wieder an das SnapIn komme. Ist das in der Core-Version schlicht nicht mehr möglich und ich sollte als Windows-Benutzer noch auf der Windows-Powershell bleiben? Oder gibt es eine Möglichkeit zur Einbindung?
  13. Versuche mit PS ein paar Admin-Aufgaben zu erledigen, dazu habe ich ein Skript.ps1 mit Menü, welches dann ja nach Auswahl per Dot-Sourcing andere Skripts einbindet und davon Funktionen ausführt. Evtl. gibt es hier elegantere Wege, ich hab mal so angefangen, damit ich einen gewissen Überblick für die verschiedenen Bereiche bekomme. Es ist nur "Kosmetik" aber mich interessiert weshalb bei mir im Skript.ps1 ein "exit" nach Switch-Auswahl nicht funktioniert. Write-Host "Hauptmenue" Write-Host "==================================================" Write-Host "1":" Benutzerverwaltung" Write-Host "2":" Gruppenverwaltung" Write-Host "--------------------------------------------------" Write-Host "0":" zurück" Write-Host "==================================================" $input = Read-Host "Auswahl" Bei 0 sollte er dann aus dem "Programm" gehen...: Ich hätte es verschieden versucht, beim Switch mit: DEFAULT {exit} oder eben explizit bei EIngabe von "0": 0 {exit} Ich habe auch schon debugged, pause davor, was $input für einen Wert hat, alles passt, nur geht er bei allen anderen und vorallem auch nicht bei "0" komischer weise auf die Seite/Funktion welche eigentlich unter "1" geführt ist. Dies passiert aber nur wenn ich auch vorher irgendwo hinspringe, wenn ich das Skript öffne, die 0 drücke wird es sauber beendet mit exit, nur wenn ich vorher z.B. 1 drücke (hier kann ich dann mit 0 auch zurück zum Hauptmenue), dann geht hier das "exit" nicht und ich finde nicht heraus wieso. Hat hier jemand Rat?
  14. Für alle Powershell-Nutzer, die mit VSCode unterwegs sind ... ... ich könnte gut mir vorstellen, dass das über kurz oder lang auch in der Powershell landet (natürlich nur v7 oder höher )
  15. Moin moin, ich spiele gerade mit JEA (just enough administration) etwas rum und möchte auf das mit MountUserDrive = $True gemappte Laufwerk eine PowerShell-Skript hochladen und ausführen. Das Skript soll auf dem Remote-Server entsprechend die Windows Updates installieren. Das kopieren der Datei klappt auch wie hier beschrieben, aber wie greife ich innerhalb der Session auf die Datei zu? In der mit Enter-PSSession beigetretenen Session bekomme ich keinen Zugriff darauf. Ich habe es mit Get-ChildItem -Path user: oder user:Skriptname.ps1 probiert. Kann mir jemand weiterhelfen (ggf. auch mit einem spezialisierterem Forum zum Thema), wie man auf die Inhalte zugreift, ohne de File-Provider freizuschalten? Vielen Dank Reiner
  16. Hallo Ich bin zur Zeit an einem Projekt dass Ordner nach Datum sortieren und ältere aktivieren soll. Da ich gerne mit Powershell arbeite, wenn auch erst kurz, wollte ich das ganze mal mit einem Script nach Datum sortieren. Leider funktioniert das nicht so wie ich es gern hätte. Hier mein Script: Get-ChildItem \\Filer1\Data$\S_Finanzen\Informatik -Recurse |` Sort-Object -Property LastWriteTime –Descending |` Where-Object {$_.Mode -notlike "d*"} |` Select-Object -First 30 |` Format-Table -Property LastWriteTime,FullName –AutoSize |` Out-GridView Hier die Fehlermeldung: Sort-Object : Es wurde kein Positionsparameter gefunden, der das Argument "â€Descending | Where-Object {.Mode -notlike d*} | Select-Object -First 30 | Format-Table -Property LastWriteTime,FullName â€AutoSize" akzeptiert. In H:\ZLI_Ausbildung\batch\Ordner_Sortierung.ps1:17 Zeichen:1 + Sort-Object -Property LastWriteTime –Descending |` + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Sort-Object], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SortObjectCommand Ich hoffe jemand kann mir ein bisschen helfen.
  17. Hallo zusammen, ich habe ein Problem mit dem Net user command C:\WINDOWS\system32>net user admin dCXSFL6IcpeDAvSJMVuD /ADD /FULLNAME:"Local Admin User" /COMMENT:"F³r die Adminstratoin der Lokalen Notebooks" Das eingegebene Kennwort enthält mehr als 14 Zeichen. Computer mit Vorgängerversionen von Windows 2000 werden nicht auf dieses Konto zugreifen können. Möchten Sie den Vorgang fortsetzen? (J/N) [J]: n es kommt immer die Abfrage! kann mann die Abfrage umgehen? Ich möchte über Batch einen User auf einem Lokalen Notebook erstellen lassen per Script, und es wird dann über Kaspersky verteilt. lg Martin
  18. Hallo, ich habe folgenden Code: #Ausgabe $object (Das Objekt wird durch Einlesen einer CSV-Datei erzeugt.) ip url id -- --- --- 192.168.1.2 www.google.de 75 192.168.2.4 www.web.de 76 #Code foreacch ($element in $object) { Invoke-RestMethod -Method Post -Uri $url -Body $body -Headers $header -OutFile .\log.out } $url enthält hierbei die Zugriffsurl für meine Datenbank, $body enthält in JSON-Format alle wichtigen Informationen, damit die URL in den Eintrag mit der ID XY in meiner Datenbank ergänzt wird, $header enthält den für den Datenbankzugriff notwendigen Header. Das CmdLet Invoke-RestMethod gibt mir eine durch die API der Datenbank automatisch generierte Rückmeldung ("Url in den Eintrag XY erfolgreich eingetragen.") zurück, welche ich in die Datei log.out rausschreibe. Das Problem ist, dass scheinbar durch die foreach-Schleife die Datei log.out immer wieder überschrieben wird. ($objekt ist nur ein Ausschnitt aus der CSV-Datei. In meinem Skript lese ich die ganze Datei ein.) Wie kann ich das bewerkstelligen, dass jede Rückmeldung an die Datei log.out angehangen wird? $object wird im Skript weiter verwendet und sollte daher nicht überschrieben werden. Kann mir da jemand weiterhelfen? Viele Grüße, checko0701
  19. Hallo zusammen, ich würde gern am Ende unseres Ausrollskriptes zur Serverinstallation unsere Admin-Installations-Gruppe aus der lokalen Admin-Grruppe entfernen. Zugewiesen wird sie per GPO. Ich habe jetzt überall von dem Befehl: Remove-LocalGroupMember -Group “Administrators” -Member Optimus In meiner PS Shell (Server 2016 / PowerShell 5.1) funktioniert der befehl aber iwie anders: Remove-LocalGroupMember -GroupName "Administratoren" -Name "Admin-Install" Fehlermeldung: Ausnahme beim Aufrufen von "Remove" mit 1 Argument(en): "Die Struktur der Sicherheitskennung ist unzulässig. " In C:\Program Files (x86)\WindowsPowerShell\Modules\localaccount\1.6\localaccount.psm1:590 Zeichen:35 + $group.remove("WinNT://$($Name[0]),user") + ~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI Kann jemand helfen ? Es wäre auch OK, wenn die Gruppe am Ende per GPO entfernt wird. Der Server bootet während des Ausrollens mehrfach. Vllt. ist das von bedeutung.
  20. Hallo, ich bin neu im Forum und habe gerade eine PowerShell-Schulung hinter mir. Ich komme auch ganz gut voran, aber jetzt habe ich folgendes Problem: Ich habe ein PSCustom-Objekt, welches wie folgt aussieht: ip prefixlen url --- --------- --- 1.2.3.4 32 www.web.de 10.11.12.0 24 www.google.de 10.0.0.0 8 www.youtube.de Ich möchte nun mit Hilfe eines Unterprogramms für jede Zeile des Objektes eine individuelle ID berechnen und diese in einer weiteren Property an das Objekt anhängen. Das Objekt soll danach also so aussehen: ip prefixlen url id --- --------- --- --- 1.2.3.4 32 www.web.de 23 10.11.12.0 24 www.google.de 42 10.0.0.0 8 www.youtube.de 3 Wie stelle ich das an? Ich wäre euch für Eure Hilfe sehr dankbar. Viele Grüße, checko0701
  21. Ich hadere gerade an dem Skript dieser Webseite. Speziell mit der Zeile $table = Get-ADUser $UserName -Properties City, Company, Description, Fax, HomePage, Mail, OfficePhone, PostalCode, StreetAddress Der Inhalt der Variable $table gibt mir lediglich "CN=Athes\, Bill,OU=OU1,OU=OU2,DC=4thcoffee,DC=com" zurück. Damit sind natürlich im folgenden alle Variablen leer. Wenn ich nur Get-ADUser $USERNAME -Properties City, Company, Description, Fax, HomePage, Mail, OfficePhone, PostalCode, StreetAddress mit F8 in VSC ausführe, dann erhalte ich das korrekte Ergebnis. Wer kann mir bitte den Unterschied erklären? Danke vorab 4077
  22. Hallo zusammen, ich beschäftige mich noch nicht lange mit PowerShell und habe jetzt ein Problem, vielleicht kann mir jemand helfen. Ich habe in einem Verzeichnis mehrere Dateien, mal 10 oder auch mal mehr. In diesen Dateien möchte ich die erste Zeile entfernen. dazu verwende ich den folgenden Code: $file = "$Test_ROOT\*.xml" (Get-Content $file | Select-Object -Skip 1) | Set-Content $file Das funktioniert, wenn im Verzeichnis eine Datei liegt. Sind es mehrere, dann werden die Dateien vom Inhalt größer. es sieht so aus, als wenn der Inhalt der vorhergehenden Datei mit eingefügt wird. kann mkir jemand dazu etwas sagen oder helfen ? MfG. Volker
  23. Hallo Leute, ich brauche Eure Hilfe. Ich muss eine Liste aller E-Mail Adressen erstellen. Aber nur die, deren Benutzer auch im Adressbuch angezeigt werden. Ich bin leider kein Powershellprofi. Ich habe hier einen Exchange 2010. Kann man diese Liste mit PS erzeugen? Lieben Dank für Eure Hilfe Light
  24. Hallo an Alle, ich weiß nicht wie und ob ich das Ziel erreichen kann und bitte daher um eure Hilfe: In einem Exchange online Benutzerpostfach wurde eine automatische Weiterleitung eingerichtet. Gibt es die Möglichkeit zu sehen wann diese Weiterleitung eingerichtet wurde. Hintergrund der Frage: Mit diesem Befehl Get-Mailbox -ResultSize unlimited | Where-Object {$_.ForwardingSMTPAddress -ne $null} | Select-Object Name,ForwardingSMTPAddress habe ich vor knapp einem Monat eine eingerichtete Weiterleitungen von intern nach extern gesucht, aber keine Ausgabe bekommen. Jetzt sehe ich mit dem gleichen Befehl eine Weiterleitung.....diese soll aber schon deutlich länger bestehen. Gab es da zuvor eine Änderung in Exchange online? Würde gerne wissen wie es dazu kommen konnte.
  25. Hallo in die Runde, ich hab da mal eine Frage zu einem Skript, vorab das Szenario: Ich erhalte mehrere Textdateien, darin sind mehrere Datensätze die ich über zwei Werte eindeutig zu ordnen kann. Eines ist die Auftragsnummer ($ANR) das andere eine Art Satzbezeichnung ($STZ). Nun würde ich einfach gerne die jeweilige Input-Datei zeilenweise auslesen und dann in eine neue Datei ausgeben. Die neue Datei soll dabei die Auftragsnummer beinhalten und einen Zähler. Nehmen wir ein Beispiel: 0200 A510158 Hauptsatz1 0300 A510158 Nebensatz1 0300 A510158 Nebensatz2 und so weiter - in der Datei kann es auch vorkommen, das die selbe Auftragsnummer mit der selben Satzart mehrfach vorhanden ist. Daher ist es wichtig, das alle 0200 eine eigene Ausgabedatei bekommen und die Nebensätze der richtigen Datei zugeordnet werden. Folgendes Skript habe ich dazu bisher entwickelt: clear-host # Deklaration Variablen $Eingang = "e:\powershell\Eingang\" $Ausgang = "e:\Powershell\Ausgang\" $datei = gci $Eingang foreach ($a in $datei){ get-content $a.FullName | foreach-object {$_ # Variablen $STZ = $_.Substring(0,4) $ANR = $_.Substring(9,12) $i = 1 $ausgabefile = $ANR +'_'+ $i + '.txt' if ($STZ -eq '0200') { do { if (Test-Path $ausgang$ausgabefile) { $i = $i +1 $ausgabefile = $ANR +'_'+ $i + '.txt' $ausgabe = $ausgabefile } else {$_ | out-file -filepath $ausgang$ausgabefile -append } } while ( Test-Path $ausgang$ausgabefile) $_ | out-file -filepath $ausgang$ausgabefile -append } else {$_ | out-file -filepath $ausgang$ausgabe -append} } } Leider ist das Ergebnis nicht 100% das was ich gerne hätte. Mit einer Testdatei im Eingang erhalte ich dann einen Ausgang: A510158_1.txt A510158_2.txt A510158_3.txt Wobei in der Datei 1 nur 1x die Zeile 0200 enthalten ist, die restlichen zwei Dateien dagegen sind korrekt. Ich weiss also nicht, warum er die Datei 1 überhaupt so erzeugt und wieso er dann im späteren Verlauf die Dateien richtig aufbaut. Hat jemand eine Idee, was ich dabei übersehe? Gruß Forseti -Update: Hat sich gerade erledigt, hab den Fehler gefunden - den Zähler auf 0 gesetzt und die Variable $i und $ausgabefile vor das DO gesetzt, jetzt macht er das was ich will.
×
×
  • Create New...