Quantcast
Channel: Windows PowerShell Forum
Viewing all 2314 articles
Browse latest View live

Eine Klasse in zwei unterschiedlichen Namespaces

$
0
0

Hallo,

ich habe 2 Assemblies Assembly1 und Assembly2, welche jeweils im GAC liegen.

Die Klasse Connection im Namesprace MyNamespace existiert in beiden Assemblies.

Wie kann ich definieren, welche Assembly ich nutzen möchte, wenn ich die Klasse MyNamespace.Connection in meinem PowerShell-Code nutze.

Danke im Voraus und viele Grüße


PowerShell4 update für Win7-x64

$
0
0

Hallo,

irgendwie möchte das PowerShell-Update auf die Version 4 nicht wirklich funktionieren. Lt. Beschreibung auf der Homepage: http://www.microsoft.com/de-de/download/details.aspx?id=40855 sollt es gggggggaaaaannnnzzzz einfach sein. Also habe ich mir einen Win7-x64-Rechner aufgesetzt und danach das Update windows6.1-KB976932-X64 installiert. Auf Framework 4 habe ich Verzichtet, damit ich es danach nicht mehr deinstallieren muss – lt. Artikel. Nun Installiere ich mir Windows Management Framework 4.0 über die Datei: Windows6.1-KB2819745-x64-MultiPkg.msu wie ich aus der Seite: http://www.microsoft.com/de-de/download/details.aspx?id=40855 lesen kann. Nun sollte doch PowerShell-4 installiert sein, oder täusche ich mich?

Nun kann ich den Rechner x-mal rebooten, habe aber danach noch immer der PowerShell 2.0 auf dem Rechner. Ich habe meinen Rechner schon mind. 5x neu aufgesetzt, aber immer das gleiche Ergebnis.

Was mache ich nur falsch?

Powershell 4.0 Ausgabe

$
0
0

Hey Leute,

ich habe jetzt schon echt lange gesucht und auch viel probiert. Wahrscheinlich ist es auch nur eine Kleinigkeit, aber ich komme einfach nicht drauf.

Aufgabe ist: Erstelle via Powershell eine Grid Ausgabe mit Eingabe Feld. Gebe hier den Ländercode ein und lass dir das jeweilige Land ausgeben. Nach jeder Ausgabe soll das Programm so lang weiterarbeiten bis auf Cancel geklickt wird. Angelegt ist eine countrycode.txt die wie folgt gelistet ist:

Name,Iso

Albania,AL

Austria,AU

usw.

getrennt durch Kommas für die einzelnen Spalten.

Meine Ausgabe für ein Land funktioniert schon, nur ist hier das Problem das er eben alles ausgiebt in dem z.b. ein AL enthalten ist. D.h. er sucht nicht expliziert in der Reihe "ISO" ich weiß in meinem Code ist auch jetzt nichts definiert, hab es schon über diverse IF abfragen versucht aber komme damit nicht hin.

Hier mal mein Code:

[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Drawing”)
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = “Ländercode Suche”
$objForm.Size = New-Object System.Drawing.Size(400,300)
$objForm.StartPosition = “CenterScreen”
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq “Enter”){$output}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq “Escape”)  {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = “OK”
$OKButton.DialogResult = “OK”
$OKButton.Add_Click({$output})
$objForm.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = “Cancel”
$CancelButton.DialogResult = “Cancel”
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = “Bitte geben Sie den Ländercode ein:”
$objForm.Controls.Add($objLabel)

$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)

$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})

[void] $objForm.ShowDialog()
$output = new-object System.Windows.forms.label
$output.location = new-object System.drawing.size(30, 200)
$output.size = New-Object System.Drawing.Size(300,300)
$output.Text =Import-Csv "c:\Users\oziegler\Desktop\CC\countrycode.txt"         |                    Select-string $objTextBox.text
$objform.controls.add($output)



[void] $objForm.ShowDialog()
$output.text

Habt ihr da noch eine Idee? Schonmal vielen Dank im Voraus.

Vielen Dank im Voraus =)

Script

$
0
0

Ist es möglich, ein Sript für Office 365 zu bauen?

Das Script kann ein Office-Script oder ein Powershell-Script sein.

Das Script sollte folgendes tun:

Es soll einmal pro Woche die automatische Antwort deaktivieren und gleich wieder aktivieren.

Der Grund dafür: Wir möchten, dass jeder Absender einmal pro Woche eine automatische Antwort bekommt.

Derzeit bekommt jeder Absender nur einmal diese Benachrichtigung und danach nie wieder.


Outlook - Script liest nicht alle Mails (Schleifenproblem)

$
0
0

Hallo Community,

ich bekomme ein Problem nicht in den Griff, hoffe jemand kann mir behilflich sein.

Aus einem Verzeichnis verschiebe ich Dateien in ein Archiv-Verzeichnis.

Handelt es sich um eine verschlüsselte Mail (ich prüfe ob HTMLBody NULL ist), dann tue nichts, da zum Verschieben sowieso keine Rechte vorhanden sind.

Handelt es sich NICHT um eine verschlüsselte Mail, verschiebe diese in Archiv-Verzeichnis.

PROBLEM: Das Script denkt irgendwann, es ist fertig, d.h. es befinden sich keine Mails mehr im Verzeichnis, obwohl das nicht stimmt. 

Wie kann ich das Verzeichnis aktualisieren, damit es alle Mails liest und bei jedem Schleifendurchlauf weiß, welche die nächste Mail ist?

Code:

$FolderInbox = 6
$objOutlook = New-Object -comobject outlook.application
$objMailbox = $objOutlook.GetNamespace(“MAPI”)
$inbox = $objMailbox.GetDefaultFolder($FolderInbox)
$targetfolder = $inbox.Folders | Where-Object { $_.Name -eq "test_powershell" }
$archivefolder = $inbox.Folders | Where-Object { $_.Name -eq "test_powershell_archiv" }

$Counter = $targetfolder.ShowItemCount
$ItemsCount = $targetfolder.Items.Count
Write-Host $ItemsCount

foreach($item in $targetfolder.Items) {
    if($ItemsCount -gt 0) {
        if($item.HTMLBody) {
            foreach($attachement in $item.attachments) {
                Write-Host $attachement.filename

                if(!$attachement.filename) {
                    Write-Host FileName leer
                }
                elseif ($attachement.filename -match  "(.jpg|.log)") {

                    Write-Host FileName stimmt mit Exclude-Regex überein

                }
                else {

                    Write-Host FileName stimmt NICHT mit Exclude-Regex überein

                }
            }
            $item.Move($archivefolder)
            $ItemsCount--
        }
        else {
            $ItemsCount--
        }
    }
}

Jemand eine Idee?

Das einzige was mir einfällt ist, die Mails in einen Array zu stecken und dann

- falls verschlüsselt, Index ++

- falls unverschlüsselt, Index bleibt (da Mail verschoben wird und nächste Mail an den aktuellen Index verschoben wird)

beste Grüße

Export-Csv mit Get-ADGroupMember funktionier nicht

$
0
0

Hallo,

ich bin neu hier und habe ein Problem. Ich versuche die Berechtigten Mitglieder einer AD Gruppe auszulesen und in eine CSV Datei zu exportieren.

Der Befehl lautet: Get-ADGroupMember -Identity (Name der Gruppe) | select name, surname | Export-csv (Pfad) -notype

Die Ausgabe beinhaltet nun den Namen und zusätzlich microsoft.activedirectory.management.adpropertyvaluecollection in Spalte A. Es sollte zum Schluß der Accountname in Spalte A, der Nachname in Spalte B usw stehen.

Habe schon gegoogled und Lösungsansätze gefunden, dass es sich hierbei um ein Array handelt. Leider hat mir keine Lösung geholfen und ich hoffe Ihr könnt mir helfen.

Gruß und schönen Abend noch

Dynamisch ou's durchlaufen

$
0
0

Hallo, bin nu ganz neu im Thema PS. Wir haben eine  immer wieder auszuführende arbeit. Die sieht folgendermassen aus:Suche Mitglieder in einer OU und lege sie in eine Gruppe. Dieser kopier job funktioniert. Was mich stört ist das ich nicht dynamisch durch die OU's gehen kann und eventuelle enderungen nicht automatisch erstellt werden können, ich hab noch nichts gefunden was mir die Lampe anschaltet.

Also ich hab $OU-start="OU=hamburg,OU=deutschland,CN=europa,CN=eu"

Und ich hab die entsprechende $Gruppe="CN=admin,OU=hamburg,OU=deutschland,OU=gruppen,CN=europa,CN=eu"

Diese variablen fütter ich jedesmal manuell.... (ungewünschter Spagetticode)

Nu iss aber, wie die meisten AD's, auch unsere so aufgebaut

europa

       deutschland

               admin

               verkauf

               lager

       schweitz

               admin

               verkauf

               lager

usw. Ihr wisst wie ich's meine. Frage also wie gehe ich durch diese ou's??

Dank im vorraus


Add-PSSnapin : Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.

$
0
0

Hallo,

ich erhalte seit heute bei der Ausführung von Skripten, die bisher problemlos liefen Fehlermeldungen beim Laden von Snap-Ins.

if ((Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue) -eq $null) {
	Add-PSSnapin Quest.ActiveRoles.ADManagement -Verbose
}

produziert beispielsweise die Fehlermeldung:

Add-PSSnapin : Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
In Zeile:2 Zeichen:1
+ Add-PSSnapin Quest.ActiveRoles.ADManagement -Verbose+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : NotSpecified: (:) [Add-PSSnapin], ArgumentException+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.AddPSSnapinCommand

auch beim Starten von PowerCLI 5.8 etc. erhalte ich immer die gleiche Fehlermeldung.

Der Rechner ist ein Windows 8.1 mit allen aktuellen Patches und Hotfixes bis heute und WMF 4.0.

Es wäre super, wenn jemand einen Hinweis geben könnte, woran es liegt und wie ich es beheben kann, denn die Administrationsskripte benötige ich dringend.


Mit freundlichen Grüßen

Jens Kalski



Dateien/Verzeichnisse nach Vergleich durch „compare-object“ mit robocopy kopieren

$
0
0

Hallo Powershell Gemeinde,

folgendes Problem:

Ich möchte täglich ein script starten,  dass ein Verzeichnis mit Untererzeichnissen und Dateien auf neue Verzeichnisse/Dateien überprüft . Sollten neue Verzeichnisse/Dateien gefunden werden, so sollen nur diese kopiert werden. Da es sich bei den meisten Dateien um sehr große Dateien handelt , soll dies mit robocopy gelöst werden. (Wiederaufnahme bei Abbruch).

In meinem Versuch ist vermutlich das Problem,  dass die mit „compare-objekt“ gefilterten Daten nicht korrekt an robocopy übergeben werden können. Mit „copy-item“ anstelle von robocopy werden immerhin Dateien, allerdings keine Verzeichnisse kopiert.

Hier mein Versuch:

######################################################################################################
# Variablen setzen, Verzeichnisse einlesen und mit -Expandproperty für Arrayverarbeitung vorbereiten #
######################################################################################################

$Sourcepath = "\\srvatctls\IMGCBT\FUJITSU\H710\Maintenance\H710W7_Maint\Image\H710W7_M03b\test\"
$Destinationpath = "c:\temp\test"
$IfFilled = Test-Path "c:\temp\test\*.*"
$Sourcecontent = Get-ChildItem -Recurse $Sourcepath | Select-Object -ExpandProperty fullname
$Destinationcontent = Get-ChildItem -Recurse $Destinationpath | Select-Object -ExpandProperty fullname

##################################################################################################################################
# Prüfen (und kopieren), ob Zielverzeichnis leer ist, da ein leeres Verzeichnis im nächsten Schritt nicht verglichen werden kann #
##################################################################################################################################

If ($IfFilled -match 'False') {robocopy.exe "\\srvatctls\IMGCBT\FUJITSU\H710\Maintenance\H710W7_Maint\Image\H710W7_M03b\test" "c:\temp\test" /S /Z /XA:H /COPY:DAT /R:3 /W:3 /Reg /LOG+:"c:\temp\test\loggi.txt" /TS /FP /NP}
else
{}
#########################################################################################
# Prüfen, ob Dateien im Zielverzeichnis vorhanden sind. Falls nicht, werden sie kopiert #
#########################################################################################

{$NewFiles = Compare-Object -ReferenceObject $Sourcecontent -DifferenceObject $Destinationcontent -Property fullname -PassThru
Robocopy.exe $NewFiles $Destinationpath /S /Z /XA:H /COPY:DAT /R:3 /W:3 /Reg /LOG+:"c:\temp\test\loggi.txt" /TS /FP /NP}

Weitere Frage:  Da es eigentlich zwei Quellpfade sind, die überprüft werden sollen, würde ich den Aufruf für robocoy zweimal starten. Ist es auch möglich mehrere Quellpfade in eine Variable zu packen und diese an den copybefehl zu übergeben?

Danke schon mal für eure Hilfe!

Sönke

Script um Dateien in Ordnern zu suchen welche älter sind als X Tage

$
0
0

Hallo Zusammen

ich bin Windowspowershell user anfänger und habe folgendes Problem:

Gerne würde files löschen welche älter sind als X Tage aber in speziellen foldern liegen.

Meine Folderstruktur sieht wie folgt aus:

Ordner

c:\tmp

inhalt tmp

PS C:\tmp> get-childitem

Verzeichnis: C:\tmp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        24.11.2014     09:26            test
-a---        24.11.2014     07:34        171 delete_files_older_then_x_days.ps1
-a---        24.11.2014     08:25        164 Find_Folder.ps1
-a---        24.11.2014     08:59        871 Powershell_README.txt

im Ordner test hat es wiederum 3 Folder

PS C:\tmp> cd test
PS C:\tmp\test> ls


    Verzeichnis: C:\tmp\test


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        24.11.2014     09:08            456
d----        24.11.2014     09:26            456 - Kopie (2)
d----        24.11.2014     09:26            geko

Mein Problem:

Gerne würde ich alle Dateien löschen welche älter als 30 Tage sind und im Ordner geko liegen.

Wichtig hierbei der Ordner geko könnte aber auch auch noch zusätzlich in anderen Subfoldern liegen. Also finde alle Dateien welche in einem Ordner liegen der geko heisst und älter als 30 Tag sind!

Das habe ich versucht.

get-childitem "c:\tmp" -recurse | where { $_.lastwritetime -lt (Get-Date).AddDays(-5) -and -not $_.psiscontainer -and $_.name -like "geko" } | remove-item -verbose -recurse -whatif

leider funktioniert das nicht was mache ich falsch?

Besten Dank für Euer Feedback

Login / Logout Script loggt "falsche" Werte

$
0
0
Hallo zusammen,

ich versuche RemoteDesktopAnmeldungen an unseren Server-VMs (2012) zu protokollieren. Hierzu nutze ich unter anderem die folgenden 2 Befehle in meinem Skript, welches über eine BenutzerGPO aufgerufen wird :

[String]$ClientName = $env:Clientname
[String]$ClientIP = [System.Net.Dns]::GetHostAddresses($env:clientname)[0].ToString()

Wenn ich die Befehle bei angemeldetem User in die Powershell eingebe, bekomme ich auch die richtigen Werte angezeigt (Hostname des Clients, IPv4 Adresse des Clients), wenn das Loginscript (über Benutzer GPO) jedoch läuft bekomme ich die IPv6 Adresse des HOSTS, sowie keinen Clientnamen in das Log protokolliert. Ich habe die Vermutung das dass Skript im Kontext des Systems läuft, weiß aber nicht ob meine Annahme richtig ist und vor allem wie ich das Problem lösen könnte.

Danke für jede Hilfe,
Mag


Auswertung von Festplattenspeicher \ E-Mail

$
0
0

hallo zusammen

mit diesem script wird das lokale laufwerk gelesen und wenn der schwellwert erreicht ist wird ein email ausgelöst.

meine frage an euch. das System läuft nicht immer. was ist die besteh lösung um dieses PS script zu starten? scheduler task beim starten des system? oder gibt es einen startup folder? es ist noch keine schleife eingebaut. müsste ich hier noch eine endlosschleife einbauen mit pausen um das system nicht gross zu belasten?

    Clear-Host

    # Angabe Schwellenwert in %
    $Schwellenwert = 20

    $ArrayLaufwerke = @(Get-WMIObject Win32_LogicalDisk -filter "Name='c:'")

    # Durchlauf
    for ($i = 0; $i -lt $ArrayLaufwerke.count; $i++)
    {
    # Gesamtspeicher, Restspeicher, Berechnung Prozent Restspeicher
    $LaufwerkGesamtSpeicher = [System.Math]::round([int]($ArrayLaufwerke[$i].Size/1024/1024/1024),2)
    $LaufwerkFreierSpeicher = [System.Math]::round([int]($ArrayLaufwerke[$i].FreeSpace/1024/1024/1024),2)
    $LaufwerkFreiInProzent = [System.Math]::round(100/($LaufwerkGesamtSpeicher/$LaufwerkFreierSpeicher),2)

    # Auflisten der Laufwerke
    Write-Host Laufwerk $ArrayLaufwerke[$i].DeviceID -ForegroundColor Green
    Write-Host Gesamt: $LaufwerkGesamtSpeicher GB
    Write-Host Frei: $LaufwerkFreierSpeicher GB "($LaufwerkFreiInProzent %)"

    if ($LaufwerkFreiInProzent -lt $Schwellenwert)
    {
    #Write-Host "Achtung! " -ForegroundColor Red -NoNewline; Write-Host Der Festplattenplatz liegt unter $Schwellenwert %!

    $body = @"
    Dear User

    Disk Space is under 20%.

    Best
    Administrator

"@
    Send-MailMessage -To "***@**" -From "it@****" -Subject "Disk Space under 20%" -SmtpServer ****** -Body $body
    }
    }

vielen dank für eure hilfe und antwort.

grüsse

PowerShell Script wird nicht beendet wenn über Taskplaner gestartet

$
0
0

Hallo zusammen,

ich habe ein Powershellscript zur WSUS Serverbereinigung erstellt und als geplante Aufgabe eingerichtet. Auf den Windows 2008R2 Servern läuft das auch soweit prima, nur auf dem 2012R2 Server bleibt der Task im Status "wird ausgeführt". Wenn ich das Script manuell starte läuft es soweit durch. Wo kann hier der Fehler liegen?

Zeile in Datei suchen mit Sonderzeichen

$
0
0

Hallo,

ich möchte gerne in eine Datei, die dem XML Format ähnlich ist, eine Zeile suchen und in die nächste Zeile eine weitere Zeile hinzufügen. Mein Problem, in beiden Zeilen befinden sich Sonderzeichen.

Ich Suche in der Dateie diese Zeile:

<item oor:path="/org.openoffice.Office.Paths/Paths/org.openoffice.Office.Paths:NamedPath['AutoCorrect']"><prop oor:name="WritePath" oor:op="fuse"><value>$(user)/autocorr</value></prop></item>
und möchte direkt nacht dem letzten > diese Zeile einfügen:
<item oor:path="/org.openoffice.Office.Paths/Paths/org.openoffice.Office.Paths:NamedPath['AutoText']"><prop oor:name="UserPaths" oor:op="fuse"><value><it>file:S:\_Globale_Autotexte</it></value></prop></item>
Die Sonderzeichen wie Anführungszeichen zerstören immer meine abfragen. Wer kann mir einen Hinweis geben?




IT Berater


Get-ChildItem - Verzeichnisse rekursiv zählen - Unterschiedliches Ergebnis zu Verzeichnis->Eigenschaft->Inhalt->Anzahl Ordner

$
0
0

Hallo liebe Community,

ich bin gerade dran, einem Script einen Pfad mitzugeben und dieses soll mir die Anzahl der Unterverzeichnisse liefern.

An sich eigentlich nicht's weltbewegendes, aber ich bekomme eine nicht nachvollziehbare Anzahl zurück.

Führe ich folgende Befehle aus, bekomme ich als Ergebnis 28994.

(gci -Path "..\..." -Recurse | Where-Object {$_.PSisContainer -eq $true}).Count

# oder

(gci -Path "..\..." -Recurse | Where-Object {$_.Mode -like "d*"}).Count

Gehe ich aber auf angegebenes Verzeichnis und klicke mit Rechtsklick auf Eigenschaften, wird die Anzahl der Dateien und Verzeichnisse unter Inhalt berechnet:

Inhalt: 369.378 Dateien, 30.516 Ordner

Kann mir jemand erklären, woher diese Differenz zwischen den zwei Werten kommen kann?

Wäre super!

Danke und beste Grüße


Wie verwende ich ein Element eines Arrays als Variable ohne das Element zu verändern?

$
0
0

Hallo zusammen,

ich habe mir ein kleines Powershell Skript geschrieben mit dem ich eine XML Datei grafisch editieren kann. Für jeden Eintrag der in der XML Datei geändert werden soll gibt es ein Textfeld das den bisherigen Wert enthält, beim Klicken auf den Speichern Button wird dann der geänderte Wert zurückgeschrieben.

Das Ganze sieht dann etwa so aus:

SWRepository = $XMLFile.Installer.Resources.Repository.Trim()

$label2 = New-Object Windows.Forms.Label
$label2.text = "Path to your Software Repository"

$text2 = New-Object Windows.Forms.TextBox
$text2.Location = New-Object Drawing.Point 200,90
$text2.Size = New-Object Drawing.Point 200,30
$text2.Text = $SWRepository

...

$button.add_click({
$XMLFile.Installer.Resources.Repository = $text2.text
$XMLFile.Save(((Get-Item $PSScriptRoot).FullName) + "\Variable.xml")
})

Da die XML Datei allerdings wächst (und damit auch der Bedarf einzelne Werte zu ändern) möchte ich meine GUI nicht jedes mal mühselig neu aufbauen und einzelne Textfelder verschieben, sondern habe das in eine Schleife ausgelagert. Für jeden Wert aus der XML Datei unterscheiden sich die einzelnen Zeilen meiner GUI eigentlich nur in drei Werten (Titel, Beschreibung, Pfad innerhalb der XML Datei). Ich habe daher einen verschachtelten Array gebaut in dem ich diese drei Werte angebe, eine Schleife baut mir dann die GUI zusammen. Der Code dazu sieht so aus:

 
$Important += @( ,($XMLFile.Installer.Resources.Repository,"Path to your Software Repository","Path that contains the VHD repository","text"))

foreach ($element in $Important)
{
$label = New-Object Windows.Forms.Label
$label.text = $element[1]

$element[3] = New-Object Windows.Forms.TextBox
$element[3].Location = New-Object Drawing.Point 200,$p
$element[3].Size = New-Object Drawing.Point 200,30
$element[3].Text = $element[0]

$form.controls.add($label)
$form.controls.add($element[3]) }

Soweit funktioniert alles ganz wunderbar, allerdings brauche ich eine zweite Schleife die das Speichern übernimmt (beim Klick auf den Speichern Button). Da ich ursprünglich einen einzelnen Eintrag für jeden Wert der XML Datei hatte, konnte ich den explizit ansprechen und geänderte Texte eintragen, jetzt muss ich aber innerhalb der Schleife das Objekt aus meinem Array verwenden. Ich habe das hier probiert:

$button.add_click({
foreach ($element in $Important)
{
$element[0] = $element[3].text
}
$XMLFile.Save(((Get-Item $PSScriptRoot).FullName) + "\Variable.xml")
})

Damit ändere ich aber den Wert von "$element[0]", schreibe also statt meinem Objekt das auf einen XML Wert verweist einen simplen String hinein. Logischerweise wird dann auch nichts in meiner XML Datei geschrieben.

Habt ihr einen Tipp für mich, wie ich meinen geänderten Text in die XML Datei bekomme indem ich den Inhalt von "$element[0]" verwende, statt die Zelle zu überschreiben?

Vielen Dank für Eure Hilfe

Joh

geschicktes Handling von Daten in der Zwischenablage

$
0
0

Einen wunderschönen guten Tag,

leider schlage ich mich nun schon seit Tagen mit dem Problem herum, Daten aus der Zwischenablage in eine DataGridView-Tabelle einzufügen. Grundsätzlich komme ich natürlich an die Daten mit der Klasse [System.Windows.Forms.Clipboard] heran, doch kann ich mit dem Output der GetText()-Methode nicht so viel anfangen. Der OutPut bringt mit nur Strings pro Zeile, wobei ich eigentlich gehofft hatte, z.B. beim kopieren von Matrizen in Excel, auf die Spalten und Zeilen einzeln zugreifen zu können. Dadurch hätte ich diese dann auch leicht in die Spalten und Zeilen meines DataGridView einfügen können.
Aktuell muss ich mir den OutPut von GetTex() per Split-Methode mühevoll zerlegen und sukzessive in mein DataGridView einfügen, was recht "lange" dauert.

Gibt es denn nicht vielleicht eine einfachere Möglichkeit, auf die Spalten und Zeilen "Struktur" in der Zwischenablage zuzugreifen?

viele Grüße und besten Dank

Function in einer neuen Powershell ausführen

$
0
0

Moin,

ich habe aktuell noch ein kleines Problem mit einem Script.

Ich schreibe zur Zeit ein SharePoint-Installations-Script. Ja, ich weiss sowas gibt es schon. Ich mache das, weil ich mir Powershell aneigenen will.

Ich habe eigentlich schon alles fertig, nur gibt es da ein Problem. Sobald der SharePoint installiert ist, wird die Farm ohne Probleme auch installiert. Sobald aber Dienste installiert werden sollen, kennt Powershell die SP-CMD's nicht mehr.

Folgendes wollte ich nun machen. Ich habe für jeden einzelnen Dienst eine Funktion geschrieben, diese in Moduledateien eingebettet. Nun will ich beim Aufruf von der Funktion im Hauptscript, dass die Funktion in einer neuen seperaten Powershell ausgeführt wird. Dudrch kann ich das Snap-In von SharePoint hinzufügen und die CMD's sollten wieder bekannt sein.

Kann mir einer sagen, wie ich eine Funktion in einer seperaten Powershell ausführe?

Danke im voraus,

Rob

Word Textfarbe ändern

$
0
0

Hallo,

ich möchte gerne ein Worddokument erstellen und dort die Textfarbe ändern.

Bei der Zeile

selection.font.color ="wdColorPaleBlue" 

bekomme ich die Meldung:

Ausnahme beim Festlegen von "Color": "Falscher Parameter."
Bei Zeile:4 Zeichen:22
+ $word.selection.font. <<<< color ="wdColorPaleBlue"
    + CategoryInfo          : InvalidOperation: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : PropertyAssignmentException

$word = New-Object -comobject Word.Application
$dokument=$word.Documents.Open('D:\Word.docx')
$word.visible = $true
$word.selection.font.color ="wdColorPaleBlue"
$word.Selection.Font.Name = "Calibri"
$word.Selection.Font.Size = "18"
$word.Selection.TypeText("Textfarbe blau!")
$dokument.Save()
$dokument.Close()
$word.quit()

Hat jemand eine Idee wieso?


IT Berater

If ($_[01] -eq "f")

$
0
0

Hallo, ich möchte aus einem Array die ersten beiden Stellen eines Datensatzes vergleichen mit einem Wert X.

If ($_[0] -eq "f"){}

Die Abfrage für das erste Zeichen klappt prima, aber wie kann ich die ersten beiden Zeichen vergeleichen?

Vielen Dank



IT Berater

Viewing all 2314 articles
Browse latest View live


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