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

XML - datei mit Powershell bearbeiten und ein Abschnitt löschen

$
0
0

Hallo Community,

ich habe ein kleines Problem wo ich keine Lösung finde!

Ich habe eine XML Datei. wo ich den Abschnitt "PromptedSubscribers" löschen muss.

***XML - Datei *****************************************************************

<?xml version="1.0" encoding="UTF-8"?>
-<DocItemSet xmlns="urn:schema:Microsoft.Rtc.Management.Xds.AppLayer.2008">
+<DocItem OwnerPool="ServerID" Owner="ServerID" Signature="SIGID" ItemId="ItemID" Name="urn:confs:UserID">
+<DocItem OwnerPool="ServerID" Owner="ServerID" Signature="SIGID" ItemId="ItemID" Name="urn:confs:UserID">
-<DocItem OwnerPool="ServerID" Owner="ServerID" Signature="SIGID" ItemId="ItemID" Name="urn:confs:UserID">
-<Data>
-<HomedResource xmlns="http://schemas.microsoft.com/RtcServer/2002/11/dbimpexp" <Infos>
 +<ContactGroups>
 +<Contacts>
 -<PromptedSubscribers>
 <PromptedSubscriber> </PromptedSubscriber>
 <PromptedSubscriber> </PromptedSubscriber>
 <PromptedSubscriber> </PromptedSubscriber>
 <PromptedSubscriber/>
 <PromptedSubscriber> </PromptedSubscriber>
 <PromptedSubscriber> </PromptedSubscriber>
 </PromptedSubscribers>

+<Containers>
-<Delegates>
<Delegate

*********************************************************************

hier ist ein Teil das Scriptes

## XML datei Bearbeiten
$xmlDoc = New-Object XML
$xmlDoc.Load($extractFile)
$xmlDoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource.PromptedSubscribers.PromptedSubscriber
$xmlDoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource.Remove("PromptedSubscribers")

nach dem Ausführen erhalte ich diese Fehlermeldung

Ausnahme beim Aufrufen von "Remove" mit 1 Argument(en):  "Die Liste hatte eine feste Größe."
In Zeile:1 Zeichen:1
+ $xmlDoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : NotSupportedException

Wie kann ich diesen Abschnitt löschen??

Gruß

Stefan


Unterordner mit übergeordnetem Ordnernamen+Archive erstellen

$
0
0

Hallo Zusammen ich bin der Werner

Ich habe bisher noch nicht so viel mit PowerShell zu gehabt. Aber nun habe ich ein Aufgabe gefasst welche durch PowerShell sicher Rationell erledigt werden könnte.

Meine Aufgabe:

Ich habe auf einem Laufwerk (E:) einen Ordner namens User. In diesem Ordner befinden sich pro Benutzer ein Ordner ca.800

Nun sollte ich in jedem dieser Benutzer-Ordner einen neuen Ordner erzeugen mit folgender Bezeichnung: Ordner Name des Benutzers plus Archive

Hier ein Beispiel: E:\User\heiniP-->Unterordner heiniP_Archive  Dies für jeden dieser 800 Ordner

Ich habe schon diverse Sachen unter Google gefunden aber ich komme nicht wirklich weiter. Kann mir da jemand helfen bitte.

Besten Dank im Voraus

Dienstkonto Ändern (Powershell 2.0)

$
0
0

Hallo zusammen, 

ich versuche einen Dienst unter einem anderen Benutzer laufen zu lassen. 

Dazu verwende ich folgenden Code:(Powershell 2.0)

$LocalSrv = Get-WmiObject Win32_service -filter "name='DIENSTXYZ'"

$LocalSrv.Change($null,$null,$null,$null,$null,$false,"DOMAIN\DIENSTKONTO","DIENSTKONTO-PW")

Allerdings funktioniert das so nicht, der Returncode ist zwar 0 (alles hat geklappt) jedoch lässt sich der Dienst nicht mehr starten. (Fehler 1069: Der Dienst konnte wegen eienr fehlerhaften Anmeldung nicht gestartet werden)

Wenn ich allerdings die verwendeten Credentials benutzte und manuell über die GUI in dem Dienst eintrage funktioniert es.

Es funktioniert via Powershell nur, wenn ich als Benutzer den Domain-Administrator oder den Lokalen Administrator nehm. 

Hat jemand eine Idee warum das mit dem "normalen" Dienstkonto nicht geht?

Kann mir jemand folgendes Skript erklären?

$
0
0

Hallo,

ich bin online auf dieses Skript gestoßen, welches ich gerne verwenden würde nur in veränderter Form:

[regex]::Replace((gc 'c:\test\*.txt' | out-string),'(?ism)^-{1,}(.*?)^-{1,}',"-"*80) | set-content 'C:\test\merged.txt'

Ich habe gesehen was das Skript macht, aber ich verstehe folgenden Abschnitt nicht: 

'(?ism)^-{1,}(.*?)^-{1,}',"-"*80)

Kann mir den jemand erklären?

Mfg

ThunderbirdOP

Powershell assoc und ftype Alternative (Standardprogramm festlegen via Powershell)

$
0
0

Hallo zusammen,

gibt es für die Powershell eine Alternative zu assoc und ftype? Diese können zwar immer noch wie folgt aufgerufen werden:

cmd /c assoc
cmd /c ftype

Jedoch funktioniert dies nicht wenn die CMD via GPO für den Benutzer gesperrt wurde.
Die Registry ist ebenfalls mit GPO für den Benutzer gesperrt und scheidet somit ebenfalls aus.

Mit folgendem Befehl kann man zwar eine Datei mit einer bestimmten Anwendung öffnen, jedoch nicht als Standard Programm festlegen.

start "notepad.exe" test.txt

Vielen Dank für eure Hilfe.

offene PowerShell Sitzung auf dem Server einsehen ? (PsSession)

$
0
0

Hi,

Ich versuche gerade herauszufinden, ob ich außer im Netstat.exe -a eine offene PowerShell Session (PsSession von Remote) auf meinem Server einsehen kann

Frage A) wie kann ich sehen ob es welche gibt

Frage B) von wem, von wo und wem wurden sie geöffnet

Frage C) kann ich bei gestoppten oder abgebrochenen Scripten dort auch vom Server aus reinspringen

Puuhh ich habe das Gefühl, dass ich es wissen müsste, aber ich drehe mich im Kreis. Eine kleiner Anstupser in die richtige Richtung reicht mir wahrscheinlich

Danke fürs durchlesen und feine Zeit

Andre 

 

Was braucht es, um Powershell Pro zu werden?

$
0
0

Hallo zusammen,

ich arbeite die letzten Monate sehr intensiv mit Powershell Themen und habe mir in dieser Zeit mindestens 100 Mal die Frage gestellt: und welche Informationsquelle nutze ich jetzt? Welches Buch soll ich lesen? Soll ich im Forum stöbern? Oder doch lieber ein Webinar?

Und ich dachte mir nun, dass wir hier mal eine Sammlung aufbauen könnten, in denen wir Material und Doings spezifizieren, die man mit einem gewissen Skill-Level nutzen kann/sollte. Außerdem führe ich weiter unten noch Randthemen bzw. Fachthemen im Bereich Powershell mit auf, die separat abgehandelt werden. Jeder ist eingeladen Vorschläge einzubringen oder Punkte zu kritisieren. Ich fange einfach mal an und fülle die Liste vorab schon mal mit meinen Daten:

_________________________________________________________

Beginner:

Bücher:

Learn Windows PowerShell in a Month of Lunches, Second Edition
Don Jones and Jeffery D. Hicks, 312 pages

Webinare:

Getting Started with PowerShell 3.0 Jump Start
Jeffrey Snover & Jason Helmick

Advanced Tools & Scripting with PowerShell 3.0 Jump Start
Jeffrey Snover & Jason Helmick

Weiteres:

- eigene Skripte anfangen zu bauen - hierbei viel Get-Help nutzen und sich mit den Standard-Commandlets auseinandersetzen

_________________________________________________________

Intermediate:

Bücher:

Cookboks Dr. Weltner

Learn Windows PowerShell in a Month of Lunches, Second Edition

Don Jones and Jeffery D. Hicks, 368 pages

Webinare:

Weiteres:

- Technet Forum Deutsch oder Englisch (qualitativ besser) und Lösungswege nachvollziehen

- WMI lernen und verstehen und aktiv mit den Befehlen arbeiten

_________________________________________________________

Advanced:

Bücher:

https://www.manning.com/books/powershell-in-depth-second-edition

Don Jones, Jeffery Hicks, Richard Siddaway, 744 pages

Webinare:

Weiteres:

- Technet Forum Deutsch oder Englisch (qualitativ besser) und Lösungswege vorschlagen

- Regex lernen und verstehen - mit Büchern Wissen abhärten

- Auf Konferenzen / Usergroups gehen und sich austauschen

- aktiv Powershell Blogs verfolgen und ggf. selber bloggen

_________________________________________________________

Pro:

Bücher:

Webinare:

Weiteres:

- Unterbau der Powershell -sprich .Net lernen und verstehen (C# oder VB.Net)

- eigene Projekte aufsetzen und erarbeiten

- Neue Features der neuen Versionen testen und Infos der Community zur Verfügung stellen

- Auf Konferenzen / Usergroups gehen und Präsentationen halten

============================================

Fachthemen:

_________________________________________________________

Active Directory:

Bücher:

Webinare:

Powershell for Active Directory

Ashley McGlone; Jason Helmick

Weiteres:

Additional Information to MVA

Technet Information

_________________________________________________________

SCCM:

Bücher:

Microsoft System Center PowerShell Essentials

Webinare:

Weiteres:

_________________________________________________________

SQL:

Bücher:

Webinare:

Weiteres:


Best regards,

David das Neves



Please vote as helpful and mark as answer if a post helped you.
This posting is provided "AS IS" with no warranties, and confers no rights.




Split Dateiname und in eine csv schreiben

$
0
0

Guten Tag,


dieser Script schreibt alle Ordner, Unterordner und die Dateinamnen in eine csv Datei. Funktioniert bestens. Ich benötige noch die Dateiname folgendermassen gesplittet in die CSV Datei zusätzlich:


Beispiel Dateiname: 1.2_3.4.PDF

Soll: ;A a;A1 x;A11 y;1.2;3.4;1.2_3.0.mmap

Ist: ;A a;A1 x;A11 y;1.2_3.0.mmap

Script:

$CurrentPath = Get-Location
$Files = Get-ChildItem -Recurse -File
$FileFullpath = $Files.FullName
$CurrentPath = $CurrentPath -replace '\\', '\\'
foreach ($File in $FileFullpath)
    {
        $Filepath = $File -replace "$CurrentPath", ''
        $Test = $Test + ($Filepath -replace '\\', ';') + "`n"
    }
$Test >> Output.csv

Vielen Dank für eine unterstützung.


nslookup: LS in einem Skript verwenden

$
0
0

Hallo zusammen,

ich brauche in einem Skript eine Liste aller DNS Einträge eines Remote DNS Servers.

Ich habe entdeckt, dass es im interaktiven Modus von nslookup die Möglichkeit gibt mit ls diese Liste zu generieren.

Ich habe oft gelesen, dass es auch möglich sei die LS Option in der CMD als Parameter anzugeben, was bei mir aber fehlschlägt.

nslookup -ls RemoteDNSZone -server 1.2.3.4

Kann mir jemand die genaue Syntax dafür sagen?

Dieses Beispiel funktioniert ohne Probleme (Zone Transfer ist aktiv): http://andywolf.com/list-all-dns-records-from-a-public-domain-with-nslookup/

Hat Jemand eine Idee wie hier die richtige Syntax ist?

Vielen Dank

- Duffkess!

Abfrage letzte erfolgreiche Installation Windows Update

$
0
0

Guten Morgen ich bin der Werner

Leider bin ich nicht so vertraut mit PowerShell. 

Ich bin auf der Suche nach einer Möglichkeit zu prüfen, wann auf den Rechnern der letzte erfolgreiche Windows Update stattgefunden hat. Die Updates werden über einen WSUS Server verteilt.

Der WSUS ist leider keine sichere Quelle da es durch Kloonen und Provisionieren von Rechnern immer wieder zu doppelten WSUS-ID's gekommen ist und diese Rechner keine Updates bezogen haben.

Also habe ich mich im Internet auf die Suche nach einer Möglichkeit gemacht und ein PowerShell Script gefunden welches soweit auch funktioniert. Leider hat dies nur einen Hacken.... Befindet sich der Rechner (Notebook) im Sleep Modus gibt der Rechner Antwort auf die Ping-Anfrage aber sobald das Script versucht auf die Registry des Rechners zu zugreifen bricht das Script ab. :(

Mein Wunsch wäre es, dass es zwei *.CSV Files gäbe. Eines mit den "Erfolgreichen" Werten und eines mit den "nicht erreichbaren" Rechnern

Mir ist bewusst dass dies nur eine Moment-Aufnahme ist. Aber als Kontrolle und Vergleich dienen könnte.

Besten Dank im Voraus

Hier das Script welches ich wie vorhin erwähnt erweitern oder besser anpassen möchte.

# This script shows the last time that a successful Windows Update was installed. 
# This powershell script needs Quest ActiveRoles Management Shell for Directory which is a free download
# https://software.dell.com/register/71110/

# Clear Screen 
cls 

# Add-PSSSnapin needs to be invoked every time powershell console is restarted
add-PSSnapin quest.activeroles.admanagement 

# Creates an empty array
$OnlineMachines = @() 

# Specify location of the output file/s
$filetxt = "C:\ScriptExport\updateoutput-Virtual.txt"
$filehtml = "C:\ScriptExport\updateoutput-Virtual.htm"

# Retrieve all computer objects in a domain or organizational unit that match the specified condition
# This cmdlet is part of the Quest ActiveRoles Server product
Get-QADComputer -SearchRoot 'domain.ch/clients/Virtual' | %{ 
   
# Win32_PingStatus is a WMI class that represents values returned by standard ping command
# This script is run from Win Server 2003/Win XP; only IPv4 values will be returned
# Stores the result of instances of WMI class based on the WQL statement
$PingResult = Get-WmiObject -Query "SELECT * FROM win32_PingStatus WHERE address='$($_.Name)'" 
   
  # Checks if ping was successful 
  If ($PingResult.StatusCode -eq 0)  
  { 
    # Add the current PC name to the array 
    $OnlineMachines += "$($_.Name)" 
  } 

# Loop through the machines that have returned a successful ping response
foreach ($Machine in $OnlineMachines ) 

    # Specify the registry key 
    $key = "SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install"
    # Represents the HKEY_LOCAL_MACHINE base key on remote computer
    $keytype = [Microsoft.Win32.RegistryHive]::LocalMachine 
    # Opens a new RegistryKey that represents the requested key on a remote computer
    $RemoteBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($keytype,$Machine) 
    # Retrieves a subkey as read-only
    $regKey = $RemoteBase.OpenSubKey($key)
    # Retrieves the value associated with the specified name. Returns Nothing if the name/value pair does not exist in the registry
    $KeyValue = $regkey.GetValue("LastSuccessTime") 
    # Establish date format
    $System = (Get-Date -Format "dd-MM-yyyy hh:mm:ss")  
    # Checks for Windows update successful install timestamp against current system time      
    if    ($KeyValue -lt $System) 
    { 
        # Displays output inside the powershell console
# Write-Host $Machine "was last updated on " $KeyValue 

#Writes output to Text file
Write-Output "$($Machine),was last updated on,$($KeyValue)" >> $filetxt
    } 
}

# Next eight lines converts TXT,XLS,CSV to HTML  

# Reads the contents of a text file 
$content = get-content $filetxt 
# Creates an empty array
$contentlines = @()
# Loop through the contents of the text file
Foreach ($line in $content) 
{
# Creates custom COM objects
$value = New-Object -TypeName PSObject
# Adds custom property to the powershell object
Add-Member -InputObject $value -Type NoteProperty -Name Log -Value $line
$contentlines += $value
}
# Converts the contents to CSV format
$contentlines | convertTo-Html -title "Last Update Date" | out-file $filehtml

APP-V 4.6 \ SFTtray.exe via Powershell Remote ausführen

$
0
0

Hallo Zusammen

Ich versuche via PS auf Remote Systeme Applikationen zu laden, starten löschen etc.
Aber leider klappt das nicht so wie ich mir das vorgestellt habe.
Im log erscheint immer wieder:

[12/22/2015 15:35:01:167 TRAY ERR] {tid=BC8:usr=********}
The Application Virtualization Client could not load 7-Zip File Manager 9 .x x64.
You are not authorized to access this resource.
Error code: 4636126-1690650A-20000193

Grundsätzliche Frage. Ist es überhaupt möglich via PS App-V Packete Remote zu Managen? Wir haben App-V 4.6 im Einsatz. 
Auf mein Lokalen Rechner funktioniert der Script.
Wie kann ich ein Script laufen lassen mit den Berechtigungen vom Eingeloggten User? Ist das überhaupt möglich?
Das gleiche Problem auch mit SFTMIME.exe.

Das sind die Command‘s die ich auf den Rechner ausführen will.

sftmime /load app:"7-Zip File Manager 9 .x x64"
sftmime UNLOAD app:"7-Zip File Manager 9 .x x64"
sftmime CLEAR app:"7-Zip File Manager 9 .x x64"
sftmime DELETE APP:"7-Zip File Manager 9 .x x64"

SFTtray /Refreshall
SFTtray /loadall
SFTtray /launch "7-Zip File Manager 9 .x x64"

Hier noch mein Script:

$s = new-pssession -computername ******
invoke-command -session $s {

$sfttray = "C:\Program Files (x86)\Microsoft Application Virtualization Client\SFTtray.exe"
$arguments = "/launch ""7-Zip File Manager 9 .x x64"""

$p = Start-Process -Wait $sfttray $arguments -PassThru
$p.ExitCode

}

Vielen Dank für eure Hilfe und Antwort.

Grüsse

auf USB-Stick kann nicht zugegriffen werden

$
0
0

Hallo,

Ich habe gerade erst mit Powershell-Skripten angefangen. Ich habe mir ein kleines Skript zum Kopieren von Datein geschrieben. Dabei bin ich auf folgendes Problem gestoßen:

Ich prüfe erstmal, ob ein Wechseldatenträger dem der Laufwerksbuchstabe "W:\" zugeordnet wurde vorhanden ist:
psdrive | Foreach-object{
if($_.name -eq "W"){$LW=$_
write-host -f green "Wechseldatenträger W:\ gefunden"
fnDateienKopieren($LW.name)
$Erfolgreich = 1}
}
Ich suche dann auf diesem Laufwerk nach mp3-Dateien:
get-childitem -Path $Quellpfad -Filter *.mp3 | sort-object | Foreach-object{
# Datei Kopieren
copy-item $KopierDatei -destination $Zielpfad
}
Ich bekomme dann folgende Fehlermeldung:
Get-ChildItem : Das Laufwerk wurde nicht gefunden. Ein Laufwerk mit dem Namen "W" ist nicht vorhanden.
Bei D:\Dateienkopieren.ps1:38 Zeichen:14
+ get-childitem <<<<  -Path $Quellpfad -Filter *.mp3 | sort-object | Foreach-object{
    + CategoryInfo          : ObjectNotFound: (W:String) [Get-ChildItem], DriveNotFoundException
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Ich konnte das Skript auch schon erfolgreich ausführen. Dabei war allerdings der Wechseldatenträger bereits beim Start gesteckt. Verstehe nicht, warum das Laufwerk zunächst erkannt wird und ich dann nicht darauf zugreifen kann.

Für Tipps wäre ich sehr dankbar.

Bevor einer meckert: Windows 7 Home Premium SP1,  63-Bit

Gruß total_ahnungslos

Powershell - interaktive Ein und Ausgabe. Was sind das? Wie erzeugt man diese?

Objekte typisieren mit .TypeNames.Insert und .GetType() in Powershell

$
0
0

Mithilfe von .TypeNames.Insert soll es möglich sein, einem benutzerdefinierten Objekt - egal ob es mit der "Select" oder der New-Object-Methode erstellt wurde - einen Objekttyp zu geben.

Es sollte dann auch möglich sein, diesen Objekttyp mit .GetType() wieder auszulesen.

So wie in den existierenden Beispielen scheint das aber nicht (mehr ?) zu funktionieren:
Es wird immer nur "PsObject" zurückgeliefert!

http://technet.microsoft.com/en-us/magazine/hh750381.aspx
http://stackoverflow.com/questions/12682631/change-the-type-name-of-a-powershell-object-from-pscustomobject-to-something-i-c


Gibt es hier vielleicht Versionsunterschiede zwischen PowerShell 1.0 und 2.0?

Ich habe einen Workaround gefunden, der aber sicher weniger performant ist, als
.GetType().

$o ="" | Select Bug, Fryingpan
$o.PSobject.TypeNames.Insert(0,"Ladybug")
"GetType: " + $o.GetType().Name
# Workaround:
"TypeName: " + ($o | Get-Member  | Select -First 1 ).TypeName

Oder geht es doch noch irgendwie mit .GetType()?

Bildschirm sperren

$
0
0

Hallo,

als "Powershell - Newbie" suche ich mir gerade " 'nen Wolf", ich hoffe mir kannhier jemand etwas weiterhelfen, vielen Dank dafür schonmal im Voraus!

Folgendes:

- Ich benutze Windows 7 Starter und Poweshell 4.0 mit so ziemlich allen verfügbaren Erweiterungen.

- PS-Skripte mit langer Ausführungszeit lasse ich gerne im Hintergrund laufen.

- Ich bin es gewohnt bei ähnlichen Arbeiten und längeren Pausen den Bildschirm zu sperren.

- Ich möchte dieses gesperrten Zustand in einem Skript abfragen.

Es könnte auch sinnvoll sein, diesen Zustand ("sperren") mit Powershell zu aktivieren.

Also:

"Bildschirm sperren" mittels Powershell-Skript entweder abfragen oder einleiten.

Hintergrund:

Ich würde gerne bei länger dauernden Skripts den Rechner nach deren Beendigung herunterfahren, aber auch nur wenn ich nicht mehr selber am Rechner aktiv bin.

Eine Verknüpfung des Herunterfahrens mit dem Zustand "Bildschirm gesperrt" scheint mir daher das Mittel der Wahl zu sein!

( "Stop-Computer -Force " ist mir bekannt;

meine Recherchen im Internet zu diesem Thema waren bislang recht enervierend!)

Vielen Dank,

Udo


Skript für HP Proliant Server um die verwendeten NIC-Ports auszulesen

$
0
0

Guten Morgen,

ich suche ein Powershell-Skript mit dem ich die Netzwerkkonfiguration eines HP Proliant-Servers auslesen kann. Ich benötige die IP-Adresse, Subnetmask, MAC-Adresse, VLAN und der Port an dem das Netzwerkkabel wirklich physikalisch gesteckt ist.

get-netadapter habe ich mal getestet, allerdings finde ich hier nicht die Info an welchem Port das Netzwerkkabel hängt.

OS: Win 2012R2

Danke für Eure Unterstützung & Grüße,

Julian.

Zwei Scripte ein Variable

$
0
0

Hallo,

ich komme einfach nicht auf die Lösung bei meinem Problem, Bitte um Hilfe

Datei Script1.ps1

. "C:\Script2.ps1"

$global:myVar = "Hallo"

script2set "Test"


[System.Windows.Forms.MessageBox]::Show($global:myVar) 

Datei Script2.ps1

function script2set ([string] sVar){

  $gloabl:myVar = sVar

}

das Ergebnis sollte nun eine Messagebox sein mit "Test"

danke für eure Hilfe

Mario


$ in einem String

$
0
0

Hallo, ich hoffe der Titel meiner Frage ist einigermaßen verständlich.

Ich möchte in Powershell ein Dokument bearbeiten. Dazu hole ich mir den Inhalt in eine Varriable und arbeite dann mit -replace. Hier möchte ich dann einen String ersetzten. Allerdings soll in diesem String auch ein $ - Zeichen vorkommen. Die Powershell interpretiert das leider an der Stelle als Varriable und übernimmt diese dann entsprechend nicht im Zieldokument.

Kleines Beispiel

$BSP = Get-Content d:\bsp.htm

$BSP = -replace "<body>" , "<body>`n$x=$_SESSION"

bitte nicht über den Inhalt streiten, das ist nur ein Beispiel. Fakt ist das die Powershell an dieser Stelle $x und $_SESSION nicht im String übernimmt

Gibt es eine Lösung wie ich das Zeichen als String "verpacken kann?"

Vielen Dank vorab für die Hilfe!

Ordnernamen vergleichen

$
0
0

Hallo zusammen,

ich hab bisher nicht wirklich was nützliches dazu gefunden, deswegen hatte ich gehofft hier Hilfestellung zu erhalten.

Also zu meinem Problem:

Als erstes führe ich ein Backup von 2 Ordnern durch die als Unterordner in $date gespeichert werden.

Wenn die Festplatte zu voll wird, soll er alle Ordner (und deren Inhalt) löschen, die vom Namen her, älter als x-Tage sind.

Kommen wir erstmal zum Backup, damit ihr wisst wie die Ordner heißen:

# System Variable for backup Procedure
$date = Get-Date -Format d.MM.yyyy
$backup = "F:"
$heim = "E:\Home"
$desthome = "F:\$date\home"
$pathhome = test-Path $desthome


# Check Home Path
if ( $(Try { Test-Path $heim.trim() } Catch { $true }) ) {
   Write-Host "Path $heim OK"
 }
else {
   Write-Host "Path $heim not found"
   Exit
 }

# Starting Home Backup Process
 if ($pathhome -eq $true) {
    Exit
    } elseif ($pathhome -eq $false) {
            cd $backup
            mkdir $date
            cd $date
            mkdir home
            Write-Host "Home erstellt"
	        Copy-Item  -Recurse $heim -Destination $desthome
            $backup_log = Dir -Recurse $desthome | out-File "$desthome\backup_log.txt"
             }

Dazu wird noch ein weiterer Ordner gesichtert den ich aber erstmal rausgenommen hab.

Kommen wir zum Löschen der Dateien:

# Checking remaining disk space
$laufwerk = Get-WmiObject -class win32_logicalDisk
    ForEach ($element in $laufwerk){
    if ($element.DeviceID -eq "C:"){
        $laufwerk = $element.FreeSpace/1GB
        $laufwerk = $laufwerk|Out-String
        $laufwerk = $laufwerk.Split(",")
        $frei = $laufwerk[0]
        $frei = [int]$frei
        Write-Host $frei
}
}

# Deleting old files, when not enough space is left
if ($frei -le 200){
    $DatumVor40Tagen = (Get-Date).AddDays(-40)
    $DatumVor40Tagen = $DatumVor40Tagen.ToString("dd.MM.yyyy")
    Write-Host $DatumVor40Tagen
    dir "C:\Users\User\Backup" | where {$_.name -lt $DatumVor40Tagen} #|% {remove-item $_.fullname -recurse -whatif -verbose}
}
else {
    Write-Host "Es sind noch" $frei "GB freier Speicherplatz vorhanden"

Der Pfad beim Löschen ist nur ein Testpfad und entspricht deswegen nicht den Pfaden oben.

Beim testen vergleicht er zwar die Namen halbwegs richtig, allerdings eben nicht gänzlich.

Ein ähnliches Problem hatte ich beim Check des freien Festplattenspeichers, wo er einen String mit einem Integer vergleichen wollte und ich deswegen beides umgewandelt habe.

Das kann ich hier natürlich nicht machen, da ich ja beispielsweise 14.01.2016 nicht einfach umwandeln kann, da ja mehrere Punkte vorhanden sind.

Ich hoffe einer von euch hat eine Idee und kann mir weiterhelfen.

Danke im Voraus

Lotosdenta

csv nach Datum im Textformat sortieren

$
0
0

Hallo,

ich möchte eine csv Datei "on-the-fly" nach Datum sortieren.
Das Datum ist in einem Text Format.

Wenn ich die csv Datei als Text lese, klappt es bereits.
Naja, fast, die Titelzeile schmeißt einen Fehler, aber das Ergebnis stimmt.
Alle Versuche das Gleiche mit import-csv und sort-object hinzubekommen sind bisher an type casting gescheitert.

Vielleicht hat jemand eine Idee für mich?

Hier erstmal was bisher funktioniert.

Eine Beispiel csv Datei die sortiert werden soll:

_time,_column1,_column2,_column3
Fri Jan  1 07:54:01 2016,07,Item 8,XX4481
Wed Jan 13 11:14:00 2016,10,Item 8,AZ83
Fri Jan  8 10:39:14 2016,46,Item 0,XX4377
Mon Jan  4 03:29:54 2016,62,Item 7,AZ6415
Mon Jan 11 23:59:59 2016,99,Item 1,XX8882
Sat Jan  2 13:06:35 2016,54,Item 9,IT9013
Wed Jan 13 00:07:12 2016,54,Item 0,IT3704
Sat Jan  9 05:25:50 2016,85,Item 7,AZ7450
Sun Jan 10 23:34:34 2016,19,Item 5,IT5338
Sun Jan 10 23:56:50 2016,01,Item 2,IT2262
Thu Jan  7 01:20:24 2016,30,Item 0,AZ9959
Tue Jan 12 23:45:18 2016,27,Item 9,AZ159
Wed Jan  6 23:33:01 2016,66,Item 6,IT7269

Hier der fast funktionierende Code:

$inDir="c:\workdir\PS"
$outDir=$inDir
$inCSVfile="test-results.csv"
$outCSVfile="test-results-sorted.csv"

$formats= [string[]]("ddd MMM d HH:mm:ss yyyy","ddd MMM  d HH:mm:ss yyyy")
#$format="ddd MMM  d HH:mm:ss yyyy"
[System.Globalization.CultureInfo]$provider = [System.Globalization.CultureInfo]::InvariantCulture

$content=Get-Content  (join-path $inDir $inCSVfile)
$content | sort-object  {[datetime]::ParseExact($_.split(",")[0].Trim([char]34),`
                        $formats,`
                        $provider,`
                        [System.Globalization.DateTimeStyles]::None)}`
         | Out-File (join-path $outDir $outCSVfile) -Encoding ascii

Hier das Ergebnis:

_time,_column1,_column2,_column3
Fri Jan  1 07:54:01 2016,07,Item 8,XX4481
Sat Jan  2 13:06:35 2016,54,Item 9,IT9013
Mon Jan  4 03:29:54 2016,62,Item 7,AZ6415
Wed Jan  6 23:33:01 2016,66,Item 6,IT7269
Thu Jan  7 01:20:24 2016,30,Item 0,AZ9959
Fri Jan  8 10:39:14 2016,46,Item 0,XX4377
Sat Jan  9 05:25:50 2016,85,Item 7,AZ7450
Sun Jan 10 23:34:34 2016,19,Item 5,IT5338
Sun Jan 10 23:56:50 2016,01,Item 2,IT2262
Mon Jan 11 23:59:59 2016,99,Item 1,XX8882
Tue Jan 12 23:45:18 2016,27,Item 9,AZ159
Wed Jan 13 00:07:12 2016,54,Item 0,IT3704
Wed Jan 13 11:14:00 2016,10,Item 8,AZ83


Viewing all 2314 articles
Browse latest View live


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