Hallo
Ich suche ein Script, mit welchem ich bei einem Postfach alle Personen von "Senden im Auftrag von" zu "Senden als" verschieben kann.
Danke und Gruss
Nico
Hallo
Ich suche ein Script, mit welchem ich bei einem Postfach alle Personen von "Senden im Auftrag von" zu "Senden als" verschieben kann.
Danke und Gruss
Nico
Hallo Zusammen,
ich schreibe grade ein Script, welches eine Fortigate Firewall runterfährt.
Wenn ich nun den Befehl starte:
Invoke-SSHCommand -SessionId 0 -Command "execute shutdown"
dann möchte die Fortigate dies bestätigt haben ("y/n"). Wie kann ich das machen?
Das hier:
Invoke-SSHCommand -SessionId 0 -Command "execute shutdown"
Invoke-SSHCommand -SessionId 0 -Command "y"
funktioniert nicht.
Danke schonmal & LG
Dabbel-Dei
Hallo, ich möchte über 'Get-SCPFile' die COnfig-Datei einer Fortigate lokal abspeichern. Läuft ganz normal durch nur zum Schluß beim abspeichern der Datei bleibt die PS hängen und tut nichts mehr. Erst nach einem Schließen und wieder öffnen des Fensters geht es wieder. - Hat jemand eine Idee??
PS C:\Users\o.i> Get-SCPFile -ComputerName 10.0.2.2 -Credential (Get-Credential) -LocalFile C:\Temp\testconfig.txt -RemoteFile fgt-config -Verbose Cmdlet Get-Credential an der Befehlspipelineposition 1 Geben Sie Werte für die folgenden Parameter an: Credential AUSFÜHRLICH: Using SSH Username and Password authentication for connection. AUSFÜHRLICH: Fingerprint for 10.0.2.2: 88:f5:7:b2:74:8d:3a:ff:8c:6a:e9:47:4f:b3:bd:9 AUSFÜHRLICH: Fingerprint matched trusted fingerprint for host 10.0.2.2 AUSFÜHRLICH: Connection successful AUSFÜHRLICH: Downloading fgt-config AUSFÜHRLICH: Saving as C:\Temp\testconfig.txt
Das Ganze klappt nur via PSCP, SCP klappt auch nicht...
PS C:\Users\o.i> pscp.exe -pw "deVh5qTyXV-rL" -l backup.user 10.0.2.2:fgt-config "testconfig.txt" fgt-config | 827 kB | 827.7 kB/s | ETA: 00:00:00 | 100% PS C:\Users\o.i>
da ich aber im tatsächlichen skript ein 'securestring'-Passwort verwende, kann ich pscp nicht nutzen, da es dort nicht ausgelesen werden kann. Oder gibt es da eine Möglichkeit oder andere Lösungen die funktionieren?
Die einzige Lösung die funktioniert, ist eine SSH Vervindung aufzubauen und eine Sicherung am Device selbst auszulösen welche mir via FTP das File auf einen TFTP- oder FTP-Server schiebt, das ist mir aber zu unsicher.
Vielen Dank im Voraus
Hallo zusammen,
bin dabei eine Inventarisierung von PCs im Netzwerk zu schreiben. Dabei soll eine AD-Abfrage (Hashtable aus CSV) mit den ausgelesenen Daten vom PC (Hashtable aus TXT) mit verschiedenen Formaten zusammengefügt werden.
1. Hashtabelle (Daten aus Textdatei):
Name Value
---- -----
InstallDate XX-XX-XXXX
MAC_Ethernet XX-XX-XX-XX
Model_PC XXXXXXX
RAM XXXX
CPU XXXX
Host XXXX
OS XXXX
SN_PC XXXX
2. Hashtabel (Daten aus CSV)
Büro Straße Benutzer Name
---- ------ ------- ----
XXX XXX XXXXX XXXXX
Damit ich diese zusammenfügen kann sollte die Erste statt den Headern Name und Value die Werte InstallDate, MAC_Ethernet, Model_PC usw vorweisen. Gibt es da eine Möglichkeit oder muss ich mir da einen komplett anderen Weg suchen?
Vielen Dank im Vorraus.
Hallo liebe PowerShell Profis,
ich bin mit PowerShell noch nicht sehr vertraut und komme eher aus er CMD-Skripte / VBA Ecke. Das voarb, weil ich mich anscheinend etwas blöd anstelle.
Ich hoffe trotzdem, dass mir jemand auf die Sprünge helfen möchte.
Die Ausgangslage:
Ich habe 2 Dateien, die auf .pal enden (Farbpaletten). Im Notepad++ (oder anderem Texteditor) ist es möglich sich den Inhalt anzusehen. In beiden Dateien sind viele Farbcodes im Format R*G*B* enthalten.
Ich möchte am Ende einen Vergleich ziehen können, welche Farbcodes sie gemeinsam haben und bei welchen es eine Abweichung gibt. Dazu war die Überlegung, einfach alle Farbcodes auszulesen, i eine Liste zu schreiben (je für die Default Palette und für die Custom
Palette) und diese dann schlimmstenfalls manuell abzugleichen.
Ich scheitere aber am Auslesen, da die Strings:
1. eine unterschiedliche Länge haben (r0g23b100 oder auch r23g100b55 ..)
2. gibt es kein Zeichen, wann ein RGB-Wert zu Ende ist. Also habe ich kein eindeutiges Trennzeichen vom Rest der Zeile.
Beispiel Auszug:
Tr0g50b0 € Âÿÿÿÿ )00x " $& ' 1 Ur25g50b0@ € P ÿÿÿÿ )00x " $& ' Vr50g50b0€
Min Idee war vielleicht, dass man den String im Nachgang kürzt wenn keine Zahl mehr folgt. Und auch nach dem b nicht mehr als 3 Zeichen kommen.
Ich scheitere aber schon an der Ausgabe.
Folgende Versuche habe ich Unternommen:
$file = "C:\Temp\Default.txt" $results = Get-Content $file $results -like 'r*g*b*'
liefert nur einen Teil der Ergebnisse
oder
$file = "C:\Temp\Default.txt" $results = Get-Content $file | Select-String -AllMatches "r*g*b*" | Select-Object -ExpandProperty matches | Select-Object -ExpandProperty value | % { $_.replace("[default]","")} $results
liefert nur die Buchstaben r g und b
$file = "C:\Temp\Default.txt" Select-String -path $file -allmatches "r*g*b*"
liefert Dateiname, Zeilennummer, 00 Zeile ab r (auch wenn in der Zeile mehrere Farben sind
C:\Temp\Default.txt:93:00r88g100b75� ��� ����08 * ,Ich würde mir aber ein Liste (gerne in einer separaten .txt) wünschen ohne Zeilennummer nur mit allen Farbcodes:
r88g100b75
r100g100b75
00r0g100b88
Sicher kann man hier dann noch eine Stufe weiter gehen und bei jedem Fund die zweite Datei durchsuchen. Und wenn es den Code dort gibt in eine Liste (Vorganden.txt) und falls nicht in in andere TXT (nicht vorhanden) schreiben.
Das kommt ganz darauf an in wie fern jemand seine Zeit opfern würde um mich zu unterstützen.
Sicher geht Zweiteres auch manuell oder mit cmd, aber ich lerne mehr wenn ich es mit PS versuche :)
Kann mir jemand einen wertvollen Tipp geben?
Lieben Gruß Carina
Hallo Leute,
ich habe das Problem auf einem Windows Server 2012 R2 dass mir ein wichtiger Dienst immer abstürzt. Die Ursache ist mir auch schon bekannt aber es dauert noch eine Weile bis das behoben werden kann. Deswegen dachte ich mir ob man das nicht mit einem PowerShell übergangsweise lösen kann.
Ich möchte quasi ein Script schreiben welches mir einen bestimmten Eintrag in den Ereignislogs sucht und wenn etwas gefunden wird soll ein Dienst neugestartet werden. Es sollen nur die Einträge der letzten 5 Minuten durchsucht werden. Dann stelle ich das im Aufgabenplaner so ein dass es alle 5 Minuten mal läuft.
Habe zuletzt was vor 8 Jahren mit PowerShell gemacht und schon komplett alles vergessen. Würde mich freuen wenn mir da jmd behilflich sein könnte.
Unter Windows-Protokolle->Anwendung
Ereignis:
Ebene: Fehler
Quelle: TiWebServer
Allgemein: "Handlerequest error…"
Grüße
Hallo Kollegen,
ich habe eine csv Datei mit folgendem Inhalt
Scope
ScopeNo1
ScopeNo2
Nun würde ich gerne diese Liste hernehmen, um auf die in der Liste aufgeführten DHCP Scopes entsprechende Optionen zu setzen, wie DNS Server.
Dazu habe ich mir folgenden Code gebaut:
#Gemeinsame Liste Computer, Benutzer, DHCP Scopes $DHCPScopeListe = import-csv -Path C:\temp\DHCPScopeListe.csv -Delimiter ";" Schleife durch durchgehen der CSV zum Import der DHCP Einstellungen foreach ($DHCPScopeEntry in $DHCPScopeListe) { #Einzelne Scopes durchgehen echo "DHCPScope: " $DHCPScopeEntry.Scope #Scope holen $dhcpscope = Get-DhcpServerv4Scope -ComputerName $DHCPServer | ? {$_.name -like $DHCPScopeEntry.Scope} echo "dhcpscope: "$dhcpscope .... Set-DhcpServerv4OptionValue -computername $DHCPServer -scopeid $dhcpscope.ScopeId -OptionId 006 -Value $DNSServerRV1,$DNSServerRV2 -WhatIf
VOR der Übergabe an "set-dhcpserverv4..." lasse ich mir die neu befüllte Variable "$dhcpsope" ausgeben, diese ist hier bereits leer - doof.
Das Holen der DHCP Scopes an sich funktioniert, lasse ich die Where-Clause weg, erhalte ich die Liste.
Füge ich in die Where-Clause anstatt dem Variablen-Property "$DHCPScopeEntry.Scope" einen String ein, der dem Namen eines in der Liste enthaltenen Scope entspricht, funktioniert das Filtern auch.
Irgendwie stehe ich auch dem Schlauch und freue mich, wenn Ihr mich hier auf den richtigen Weg bringt...
Hallo Zusammen,
Ich möchte eine GUI in Powershell verwenden, welche ich mit Visual Studio erstellt habe
Hier ist mein derzeitiges Script, in dem der XAML code von Visual Studio als xml eingelesen werden soll:
[xml]$XAML = @"<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<Grid Margin="0,0,2,0"><Grid.ColumnDefinitions><ColumnDefinition Width="0*"/><ColumnDefinition/></Grid.ColumnDefinitions><Label Name="Enter_Hostname_Label" Content="Enter Hostname:" HorizontalAlignment="Left" Height="26" Margin="9,19,0,0" VerticalAlignment="Top" Width="98" Grid.Column="1"/><TextBox Name="Textbox" HorizontalAlignment="Left" Height="21" Margin="15,43,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="119" Grid.Column="1"/><Label Name="Available_Hostnames_Label" Content="Available Hostnames:" HorizontalAlignment="Left" Height="26" Margin="11,83,0,0" VerticalAlignment="Top" Width="125" Grid.Column="1"/><ListBox Name="Listbox" Grid.ColumnSpan="2" HorizontalAlignment="Left" Height="141" Margin="15,108,0,0" VerticalAlignment="Top" Width="119"/><Button Name="Continue_Button" Grid.ColumnSpan="2" Content="Continue" HorizontalAlignment="Left" Height="21" Margin="143,108,0,0" VerticalAlignment="Top" Width="84" Click="Button_Click"/><Button Name="Search_Button" Grid.ColumnSpan="2" Content="Search" HorizontalAlignment="Left" Height="21" Margin="143,43,0,0" VerticalAlignment="Top" Width="84" Click="Button_Click"/></Grid></Window> "@ [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework') try{ $Form=[Windows.Markup.XamlReader]::Load( (New-Object System.Xml.XmlNodeReader $XAML) ) } catch { Write-Host "Windows.Markup.XamlReader konnte nicht geladen werden. Mögliche Ursache: ungültige Syntax oder fehlendes .net" }
$Form.ShowDialog()
Allerdings bekomme ich immer die Fehlermeldung 'Der Wert kann nicht in den Typ "System.Xml.XmlDocument" konvertiert werden. Fehler: "Ein Name darf nicht mit dem Zeichen '<', hexadezimaler Wert 0x3C beginnen'
Das kann ich aber nicht großartig abändern, da der Code nunmal so aussieht..
Ich habe bereits sämtliche Artikel etc. dazu im Internet durchgelesen aber anscheinend funktioniert das bei Jedem problemlos
Kann mir Jemand sagen, was bei meinem Script falsch ist?
Hallo,
ich werde beim Ausführen meines Skriptes zum automatisierten Import und Anpassung von neuen ADUsern jedes Mal nach einer Bestätigung für den Vorgang "Set" gefragt. In meinem Skript gibt es nur eine Befehlszeile, die diesen Befehl "Set" enthält:
set-ADUser -Identity $SamAccountName -Replace @{PrimaryGroupID=$PrimaryGroupID} -Confirm:$false
Dort habe ich aber auch den Parameter "-confirm" auf $false gesetzt, was ja die Nachfrage durch das Skript eigentlich unterdrücken sollte und automatisch mit "Yes" beantworten sollte.
Leider scheint es nicht zu funktionieren. Der -force Parameter wird von Set-ADUser leider nicht erkannt. Meine PowerShell-Version ist die 4.0
Hat jemand eine Idee, wie ich diese Nachfrage unterdrücken kann? Sonst macht es das Skript nervig, wenn jedes Mal jemand davor sitzen muss und klicken muss bei jedem einzelnen User...
Viele Grüße!
Hallo zusammen,
ich habe da ein merkwürdiges Phänomen und ich hoffe hier eine Lösung zu finden.
Warum wird mir bei "PSCustomObject" bei 4 Eigenschaften der Output nebeneinander ausgegeben und wenn ich eine 5te Eigenschaft hinzufüge der Output untereinander angezeigt?
Ich würde gerne alles nebeneinander angezeigt haben, damit ich alles schön in ein csv exportieren and anschließend in der Tabelle bearbeiten kann. (es sollen noch min. 10 Andere Eigenschaften hinzu kommen)
#4 Eigenschaften: $a = 'Audi' $b = 'A6' $d = 'Blau' $e = 'Schiebedach' $myObject = [PSCustomObject]@{ Marke = $a Model = $b Farbe = $d Austattung = $e } #5 Eigenschaften: $a = 'Audi' $b = 'A6' $c = '250PS' $d = 'Blau' $e = 'Schiebedach' $myObject = [PSCustomObject]@{ Marke = $a Model = $b Leistung = $c Farbe = $d Austattung = $e }
Kann mir jemand helfen?
Danke und viele Grüße
moin
leider kommt bei größeren Menge irgendwann kein Umbruch mehr.
$OutlookRegeln = "" $AktiveOutlookRegel = $false foreach($Rule in $Rules){ if ($rule.Enabled){ $OutlookRegeln += $Rule.Name +,"`n" write-host $Rule.name -ForegroundColor Yellow $AktiveOutlookRegel = $true } } .... $BodyText += "`n" if ($AktiveOutlookRegel){ $BodyText += "Ihre Outlook Regeln: `n" $BodyText += "$OutlookRegeln "+"`n`n" }
bei der Ausgabe sieht es jedoch dann so ähnlich aus
Ihre Outlook Regeln:
eins
zwei
drei
vier
fünf sechs sieben acht usw....
Chris
Hallo an alle,
ich versuche mich gerade an PowerShell.
$Datenquelle = "SQL-test" $Datenbank = "TESTDB" $Verbindungsstring = "Server = $Datenquelle; Database=$Datenbank; Integrated Security=true;" $Verbindung = New-Object System.Data.SqlClient.SqlConnection $Verbindung.ConnectionString = $Verbindungsstring $Verbindung.Open() $Query = "SELECT Nr ,Name ,Vorname ,Titel ,Anrede FROM [TEST].[dbo].[Mitarbeiter] WHERE Name = 'Müller' or Name = 'Lehmann'" $Befehl = $Verbindung.CreateCommand() $Befehl.CommandText = $Query $Resultat = $Befehl.ExecuteReader() while ($Resultat.read()){ Write-Host $Tabelle.Name }
Soweit klappt auch alles. Jedoch möchte ich für die weiteren Schritte stets Zeile für Zeile der SQL-Abfrage durcharbeiten. Eigentlich mache ich dies mit Arrays, aber es gelingt mir nicht die Daten in ein Array zu laden.
Vielleicht kann jemand bei dem Array Problem helfen?
Wissenstechnisch hätte ich aber auch gern gewusst wie die das komplette Resultset der SQL Abfrage Zeilenweise durchlaufen kann.
Aktuell erhalte ich für 4 Zeilen im 4 Namen in 4 Zeilen.
Ergebnis:
Müller Müller Lehmann Lehmann
Müller Müller Lehmann Lehmann
Müller Müller Lehmann Lehmann
Müller Müller Lehmann Lehmann
Gewünscht wäre:
Müller
Müller
Lehmann
Lehmann
Hallo zusammen,
ich versuche ein Script zu basteln welches mir bei Eingabe der Workstation anzeigt ob und welcher User angezeigt wird. Geht eigentlich relativ bequem mit
$Rechner = "localhost" Get-WmiObject Win32_ComputerSystem -ComputerName $Rechner | Select-Object Name,UserName
Wobei der "localhost" ja immer durch den Namen der Workstation ersetzt werden muss. Ich wollte das ganze nun in eine kleine GUI packen wo es ein Eingabefenster für die Workstation gibt. Allerdings erhalte ich keinen Output. Als Powershell-Anfänger stehe ich da auf´m Schlauch um die Eingabe mit der Funktion und Ausgabe zu verbinden.
Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $window = New-Object System.Windows.Forms.Form $window.Width = 200 $window.Height = 150 $Label = New-Object System.Windows.Forms.Label $Label.Location = New-Object System.Drawing.Size(10,10) $Label.Text = "Workstation" $Label.AutoSize = $True $window.Controls.Add($Label) $windowTextBox = New-Object System.Windows.Forms.TextBox $windowTextBox.Location = New-Object System.Drawing.Size(10,30) $windowTextBox.Size = New-Object System.Drawing.Size(60,60) $window.Controls.Add($windowTextBox) $windowButton = New-Object System.Windows.Forms.Button $windowButton.Location = New-Object System.Drawing.Size(10,60) $windowButton.Size = New-Object System.Drawing.Size(45,25) $windowButton.Text = "OK" $windowButton.Add_Click({ $computerName = $windowTextBox.Text Get-WmiObject Win32_ComputerSystem -ComputerName $computerName | Select-Object Name,UserName Write-Host $users }) $window.Controls.Add($windowButton) [void]$window.ShowDialog()
Kann mir da jemand weiterhelfen oder hat sogar schon etwas fertiges für mich? Ich würde es ja über die "einfache" Variante machen, aber dazu wird die Abfrage zu oft benötigt.
Danke euch und Grüße,
Andreas
Hello,
I have a question about the AD attribute "msDS-cloudExtensionAttribute1".
Which command can I use to fill this attribute with a value in the local AD via Powershell?
set-aduser -identity Bernd | select msDS-cloudExtensionAttribute1 "xyz" does not work.
And is there a way for all users to copy the content of the "Title" attribute into the "msDS-cloudExtensionAttribute1" attribute?
Thank you very much for help
Konrad
Hallo allerseits,
Ich will vorweg nehmen, ich bin ein Anfänger was PowerShell angeht und bilde mich so gut es geht selbst fort. Also entschuldigt auftretende Fehler meinerseits.
Folgendes Phänomen habe ich beim Abfragen der Registry nach Druckern eines Herstellers.
Ich durchsuche die Registry im Pfad System\CurrentControlSet\Enum\USB nach nach einer bestimmten VID/PID mittels GetSubKeyNames -like VID_xxx
Bis dahin alles kein Thema und ich erhalte 2 Einträge, welche ich auch zu 2 neuen Pfadangaben zusammensetze, um die darunter befindlichen Schlüssel anzeigen zu lassen. Dort erhalte ich jetzt aber 3 Einträge, welche ich nicht mehr so einfach mit den 2 obigen Pfaden zusammensetzen kann, um noch eine Stufe tiefer zu schauen. Das Ziel ist es also nach Hersteller und somit nach Seriennummern zu suchen und bei den gefundenen Einträgen zu schauen ob ein Unterschlüssel Control vorhanden ist.
Es ist sicherlich einfache Logik und hat sicher nur was mit dem Nutzen von Arrays zu tun, wie ich das kombinieren kann.
$computers = "RechnerName" $Serial=foreach($computer in $computers) { $SubKey= 'SYSTEM\CurrentControlSet\Services\usbprint\Enum' $SubKey1 = 'SYSTEM\CurrentControlSet\Enum\USB' $Value = '0' $Value1 = '1' $Value2 = '2' $RegField = 'LocalMachine' $RootType= [Microsoft.Win32.RegistryHive]::$RegField $RootKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($RootType,$Computer) $RegKey = if($RootKey.OpenSubKey($SubKey)-ne $Null){ $RootKey.OpenSubKey($SubKey)}else{$Null} #################################Bis hier Problemfrei#### $Arg1=$Rootkey.OpenSubKey($SubKey1).GetSubKeyNames() -like 'VID_04E8&PID_3???' $SubKey3=foreach($Finalpath in $Arg1){ ("$SubKey1\$Finalpath").ToString()} $SubKey3 #Ergebnis sieh wie folgt aus########################## #SYSTEM\CurrentControlSet\Enum\USB\VID_04E8&PID_3311 #SYSTEM\CurrentControlSet\Enum\USB\VID_04E8&PID_331D ################################################ $Arg2=foreach($FinalValue in $SubKey3){ $RootKey.OpenSubKey($FinalValue).GetSubKeyNames() -notlike '*&*'} $Arg2 ###Ergebnis sieht wie folgt aus################### Z5H9B8GD4F00A8Z ZDGRBJAD8000GNZ ZDGRBJBDC0017EY ################################################ #wie bekomme ich jetzt korrekt und richtig die Pfade #zusammengesetzt, denn die unteren beiden Seriennummern #sind aus der PID 331D und die obere Serial aus der PID #3311 oder wie würdet ihr das lösen, um jetzt unterhalb #der Serial nach dem Unterschlüssel Control zu schauen? #SYSTEM\CurrentControlSet\Enum\USB\VID_04E8&PID_3311#\Z5H9B#8GD4F00A8Z #Viell. sollte ich das ganze auch anders aufbauen? Ich bin #für alle Lösungen und Gedanken offen und dankbar.
Guten Tag,
ich habe folgendes Anliegen:
Ich möchte ein CSV Datei die drei Komponenten enthält, in eine Variabel Importieren. Aus dieser möchte ich die einzelnen "Zellen" nehmen und in meinem Programm weiterverwenden.
Hier mein Beispiel Code für das Importieren der CSV Datei:
#CSV-File Checker $TestPath = Test-Path -Path $env:USERPROFILE\Documents\VDI-Programs-to-Check.csv if ($TestPath -eq $true) { $programs = Import-CSV -Path $env:USERPROFILE\Documents\VDI-Programs-to-Check.csv -Delimiter ";" Write-Host "VDI-Programs-to-Check.csv found!" -ForegroundColor Green } else { Write-Host "VDI-Programs-to-Check.csv not found!" -ForegroundColor Red Write-Host "Trying to Create CSV File to: $env:USERPROFILE\Documents ..." -ForegroundColor Green try { New-Item -Path $env:USERPROFILE\Documents\VDI-Programs-to-Check.csv -type "file" -value "#CSV for checking and installing Programs" | Out-Null Add-Content -Path $env:USERPROFILE\Documents\VDI-Programs-to-Check.csv -Value "`n#You can Edit this file in 'Microsoft Excel'" Add-Content -Path $env:USERPROFILE\Documents\VDI-Programs-to-Check.csv -Value "Program;InstallPath;SetupPath" Write-Host "VDI-Programs-to-Check.csv Successful created!" -ForegroundColor Green } catch { Write-Host "File could not be created!" -ForegroundColor Red } }
Und hier der Beispiel Code für das Weiter-Verwenden der Variabel:
for ($i = 0; $i -lt $programs.count; $i++) { try { $bool = Test-Path -Path "$programs[$i].InstallPath" -PathType container if($bool -eq $false) { Write-Host $programs[$i].Program " is not installed yet." -ForegroundColor Red Write-Host "`nStarting installtion..." try { Start-Process -FilePath "$programs[$i].SetupPath" -ArgumentList "/S /v/qn" -Verb runAs -Wait Write-Host "`nInstallation complete" -ForegroundColor Green } catch { Write-Host "`nSETUP NOT FOUND" -ForegroundColor Red } } else { Write-Host Write-Host $programs[$i].Program " is allready installed." -ForegroundColor Green } } catch { Write-Host "`nFAILD INSTALLATION" -ForegroundColor Red } }
Und hier noch eine CSV Datei, die ich bisher verwendet habe (einwenig zensiert ;) ):
#CSV for checking and installing Programs #You can Edit this file in 'Microsoft Excel' Program;InstallPath;SetupPath Enpass;C:\Program Files (x86)\Enpass;D:\Programme\Enpass\Enpass-setup.exe Fiddler;D:\Programme\Fiddler;\\SERVER\ORDNER\ORDNER\FiddlerSetup.exe Wireshark;C:\Program Files\Wireshark;\\SERVER\ORDNER\ORDNER\Wireshark\Wireshark-win64-1.12.7.exe VMware-Plugin;C:\Program Files (x86)\VMware\Enhanced Authentication Plug-in 6.7\;\\SERVER\ORDNER\ORDNER\VMware-6.7.0.exe
Habt ihr eine Ahnung, wie man meine Idee richtig umsetzten kann?
Vielen Dank!
Hallo,
ich habe hier ein Formular erstellt, mit dem in der AD nach
Benutzern gesucht werden soll. Die gefundenen Namen sollen
dann in einem Dropdown-Menü auszuwählen sein. Soweit klappt
das auch ganz gut. Allerdings wird der ausgewählte Name aus
dem Dropdown-Menü nicht in die Funktion "Return-DropDown"
übernommen und ich finde das Problem bzw. die Lösung nicht.
Jemand eine Idee / einen Tipp für mich?
Vielen Dank.
Gruß
yelw0rc
### powershell script execution policy Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined #Set-ExecutionPolicy Unrestricted # Load ActiveDirectory module Import-Module ActiveDirectory # .NET-Extensions (sog. Assemblies) [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") [array]$script:DropDownArray_Temp = $null [array]$script:DropDownArray = $null ### function MakeNewForm function MakeNewForm { $Form.Close() $Form.Dispose() MakeForm } ### this function returns the selected value and their actions function Return-DropDown { Write-Host "HIER !" $Auswahl = $DropDown.SelectedItem.ToString() Write-Host "Auswahl: $Auswahl" # $Test = Get-ADUser -Filter "Name -like '$Choice*'" # Write-Host "Test: $Test" } ### function MakeForm function MakeForm{ $Form = New-Object System.Windows.Forms.Form $Form.Backcolor=“white“ $Form.StartPosition = "CenterScreen" $Form.width = 800 $Form.height = 550 $Form.Text = "User Info" ### search for lastname $Label1 = New-Object System.Windows.Forms.Label $Label1.Location = New-Object System.Drawing.Size(10,10) $Label1.Text = "Search for lastname:" $Label1.AutoSize = $True $Form.Controls.Add($Label1) $FormTextBox1 = New-Object System.Windows.Forms.TextBox $FormTextBox1.Location = New-Object System.Drawing.Size(10,30) $FormTextBox1.Size = New-Object System.Drawing.Size(125,50) $Form.Controls.Add($FormTextBox1) $FormButton0 = New-Object System.Windows.Forms.Button $FormButton0.Location = New-Object System.Drawing.Size(10,90) $FormButton0.Size = New-Object System.Drawing.Size(125,25) $FormButton0.Text = "Reload Form" $FormButton0.Add_Click({MakeNewForm}) $FormButton1 = New-Object System.Windows.Forms.Button $FormButton1.Location = New-Object System.Drawing.Size(10,60) $FormButton1.Size = New-Object System.Drawing.Size(125,25) $FormButton1.Text = "Search" $FormButton1.Add_Click({ ### search for lastname $searchname = $FormTextBox1.Text ### if input is empty if ($searchname -eq $null -or $searchname -eq ""){ $Label2 = New-Object System.Windows.Forms.Label $Label2.Location = New-Object System.Drawing.Size(10,130) $Label2.Size = New-Object System.Drawing.Size(200,20) $Label2.Text = "Please enter lastname!" $Form.Controls.Add($Label2) Start-Sleep 2 MakeNewForm }else{ ### found users # $aduser = Get-ADUser -Filter "Surname -like '$searchname*'" # $aduser = $aduser.Name # Write-Host "User: $aduser.Name" [array]$DropDownArray_Temp = Get-ADUser -Filter "Surname -like '$searchname*'" foreach ($i in $DropDownArray_Temp){ $aduser = $i.Name Write-Host "aduser1: $aduser" # [array]$DropDownArray += "`"$aduser`"" # [array]$DropDownArray += $aduser | out-null [array]$DropDownArray += $aduser #| out-null } } $DropDown = new-object System.Windows.Forms.ComboBox $DropDown.Location = new-object System.Drawing.Size(160,30) $DropDown.Size = new-object System.Drawing.Size(200,20) ### add users to DropDown $count = 0 foreach ($Item in $DropDownArray){ Write-Host "$count`: $Item" $DropDown.Items.Add($Item) $count++ } $Form.Controls.Add($DropDown) $DropDownLabel = new-object System.Windows.Forms.Label $DropDownLabel.Location = new-object System.Drawing.Size(160,10) $DropDownLabel.size = new-object System.Drawing.Size(200,20) $DropDownLabel.Text = "Choose user please:" $Form.Controls.Add($DropDownLabel) ### OK Button $ButtonOK = new-object System.Windows.Forms.Button $ButtonOK.Location = new-object System.Drawing.Size(160,60) $ButtonOK.Size = new-object System.Drawing.Size(100,20) $ButtonOK.Text = "OK" $ButtonOK.Add_Click({Return-DropDown}) $Form.Controls.Add($ButtonOK) ### Cancel Button $CancelButton = New-Object System.Windows.Forms.Button $CancelButton.Location = New-Object System.Drawing.Size(260,60) $CancelButton.Size = New-Object System.Drawing.Size(100,20) $CancelButton.Text = "Cancel" $CancelButton.Name = "Cancel" $CancelButton.DialogResult = "Cancel" $CancelButton.Add_Click({$Form.Close()}) $Form.Controls.Add($CancelButton) }) $Form.Add_Shown({$Form.Activate()}) $Form.Controls.Add($FormButton0) $Form.Controls.Add($FormButton1) ### show form on the screen $Form.ShowDialog() } Makeform
Liebes Forum
Ich möchte eigentlich nur Excel öffnen mit PowerShell und das Ganze als Administrator. Wenn ich PowerShell nicht als Administrator öffne, funktioniert es ohne Probleme (es ist ein Teil eines grösseren Projekts, dass man als Administrator ausführen muss).
Das ganze Script sieht so aus:
$dateipfad = "C:\Users\Cédric\Desktop\Daten\test.xlsx" $tabelle = "Tabelle1" [int]$zeile = 2 [int]$spalte = 2 $excelanzeigen = $false $Excel = New-Object -ComObject Excel.Application # Excel starten $Excel.Visible = $excelanzeigen $Workbook = $Excel.Workbooks.Open($dateipfad) $Table =$workbook.Worksheets.Item($tabelle) $User_Name = $Table.Cells.Item($zeile,$spalte).Text $Excel.Quit() #Excel beenden [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) $User_Name
Die Zeile die Streikt ist folgende:
$Excel = New-Object -ComObject Excel.Application
Die Fehlermeldung:
PS C:\WINDOWS\system32> $Excel = New-Object -ComObject Excel.Application New-Object : Die COM-Klassenfactory für die Komponente mit CLSID {00000000-0000-0000-0000-000000000000} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154 Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). In Zeile:1 Zeichen:10 + $Excel = New-Object -ComObject Excel.Application+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException+ FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand
Ich habe schon versucht, das Script als Administrator mit der 32bit Version von PowerShell auszuführen, gleicher Fehler.
Wie gesagt, als normaler User funktioniert es ohne Probleme... An was könnte das liegen, bzw habt ihr eine Lösung?
LG Cedric
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?
Ich habe selbst folgendes zusammengestellt - Was mache ich falsch?
Für euere Unterstützung besten Dank!
VG DuDo
# Dienst stoppen Stop-Service -Name "Dienst123" # Java-Verzeichnis des ORACLE_HOME Verzeichnis herausfinden Get-ChildItem -Path .\app\oracle\* -Include *java* # Hier komm ich schon nicht weiter!? # Ermittelten Wert in der *.config Datei ersetzen Get-Content -Path C:\Program Files\CONFIG\config.config | ForEach-Object {$_ -Replace 'JAVAPFAD', 'Ermittelter Wert wie eintragen!?'} | Set-Content -Path C:\Program Files\CONFIG\config.config # Dienst starten Start-Service -Name "Dienst123" # Messagebox/Information Write-Host "Ihre Änderungen wurden durchgeführt!"
Hallo zusammen,
ich habe da eine Frage zum oben genannten Titel. Mache gerade eine Ausbildung zum Fachinformatiker in Systemintegration und bin ganz neu im Thema Powershell. Mir wurde nämlich beauftragt durch Powershell die Betriebssysteme aller User in der Firma herauszufinden. Doch leider finde ich den richtigen Befehl im Internet für Powershell nicht. Meine eigentliche Frage ist, welchen Befehl ich in Powershell benutzen muss um diese Infos (im oben genannten Titel) zu bekommen.
Ich bedanke mich schon mal im voraus.