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

Windows Updates werden über Powershell (Microsoft.Update.Session) nicht richtig bestimmt

$
0
0

Hallo Forum,

Ich versuche per Powershell die Anzahl der zur Verfügung stehenden Updates zu bestimmen.

hier ein Snipped:

function getImportantWindowsUpdates ([int] $installupdates = 0) {
	$UpdateSession = New-Object -Com Microsoft.Update.Session
	$UpdateSearcher = $UpdateSession.CreateUpdateSearcher()

	$updatecount = 0

	$updateobject = @{
		unknown = 0
		low = 0
		moderate = 0
		important = 0
		critical =0
	}

	$SearchResult = $UpdateSearcher.Search("IsInstalled=0 and Type='Software'")

	For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){
	    $Update = $SearchResult.Updates.Item($X)


		switch ($Update.MsrcSeverity) {
            { "unknown" }            { $updateobject.unknown++; continue }
            { "low" }                { $updateobject.low++ ; continue }
            { "moderate" }           { $updateobject.moderate++ ; continue }
            { "important" }          { $updateobject.important++ ; continue }
            { "critical" }           { $updateobject.critical++ ; continue }
            Default                  { $updateobject.unknown++; continue }
        }
	}

	return $updateobject
}

$osupdates = getImportantWindowsUpdates

Write-Output ("Updates.. optional: " + $osupdates.unknown + " low: " + $osupdates.low + " moderate: " + $osupdates.moderate + " important: " + $osupdates.important + " critical: " + $osupdates.critical)

Auf einem testserver erhalte ich lediglich die Ausgabe 5 unknown/optional.. in der Windows GUI sehe ich aber 5 optional und 1 important update.

Es sind sicher auch nur 5 Objekte in

$UpdateSearcher

enthalten.

Was mache ich falsch?

Danke und Gruss,

Andreas


iscsi-Target einrichten mit CHAP

$
0
0

Hi und hallo,

ich versuche recht verzweifelt, ein iscsi-Target via powershell und chap zu verbinden.An der GUI kein Problem - via powershell lässt er das einfach nicht zu.

Ich bin im Thema Powershell noch etwas in den Kinderschuhen...

Mein Skript rennt fein ohne chap.

Dann lege ich auf dem Target chap fest und hänge ich für chap dann folgendes an get-iscsitarget | connect... an: -authenticationtype onewaychap -chapuser klaus -chapsecret 123456789101112

Aber - das klappt das nicht...

Ideen?

Danke für Eure Mühe...

LG

Andy


Don´t dream your live - life your dreams!!! Senior Trainer & Consultant TraiCen GmbH http://www.traicen.com

Zusatz an Dateiname anhängen

$
0
0

Guten Morgen,

ich würde gern einen Ordner mit Dateien auslesen, und an das Ender der Datei eine gleiche Zeichenfolge schreiben. Leider habe ich keinen Weg gefunden einen Dateinamen so zu bearbeiten

[String] $path = "C:\...\Ordner"

Get-Childitem -path $path | Rename-Item -NewName {$_.Name -replace 'aktuellenDateinamen','aktuellenDateinamen+zeichenfolge'}

Kann dies so in der Art realisiert werden? Über eine kurze Hilfestellung würde ich mich freuen.

Viele Grüße

Marius

Gewisse Inhalte einer Zeile löschen

$
0
0

Hallo Leute,

nach jahrelangem mitlesen und profitieren von Euren Tips, muss ich heute selbst meine erste Frage stellen, denn die Hilfen, die in die richtige Richtung gehen, helfen mir nicht weiter.

Folgendes Problem:

Ich erstelle mit csvde eine Output Datei über alle User im AD mit einigen Attributen, die wichtig sind für diese Aktion.

Problem ist: Der DN soll nicht drin sein, csvde baut ihn aber ein und ich bekomm ihn nicht raus.

Da ich das csvde aus einem Powershell Sktipt starte, dachte ich: Warum nicht gleich damit den DN entfernen...

Ausgabe ist folgende nur auf drei Zeilen gekürzt:

DN,sn,givenName,department,sAMAccountName,telephoneNumber,mail,employeeID

"OU=_USER,OU=test-ou,DC=my,DC=domain,DC=com",Nachname,Vorname,Abteilung,samacc,0123456,vorname.nachname@my.domain.com,personalnummer
"OU=_USER,OU=test-ou,DC=my,DC=domain,DC=com",Mustermann,Max,GL,samacc,6543210,max.mustermann@my.domain.com,99999

Nu soll der DN raus...ich dachte mir ich trenne auf ", (Hochkomma und Komma) da eindeutig in jeder Zeile.

Also:

ForEach ( $line in $output) {
    ($dn,$rest) = $line.Split("'",'")
    write "dn= $dn"
    write "rest= $rest"
    }


Habe versucht ", mit allen Mitteln zu maskieren...die Ausgabe ist aber immer Schrott.
Meist ist "dn=" leer und "rest=" enthält die gesamte Zeile ohne " oder ,

Ist split vllt gar nicht angebracht an dieser Stelle?

Bin für jede Hilfe dankbar!

Giuseppe


Powershell script schneller durchlaufen lassen.

$
0
0

Hallo

ich habe ein powershell script, welches mir alle Dienste die mit "Heinz" beginnen und nicht deaktiviert sind, nacheinander startet

Get-Service | Where-Object {$_.displayName.StartsWith("Heinz")} | Start-Service

Gibt es eine möglichkeit diesen Befehl so umzubauen, das die dienste gleichzeitig bzw. mehere auf einmal gestartet werden.
Aktuell läuft das Script ja alphabetisch alle Dienste durch die so heißen, startet den ersten, wartet auf rückmeldung und dann erst wird der 2 gestartet(und so weiter)


Löschen ListBox.Items aus zweitem Thread

$
0
0

Hallo,

ich habe eine Powershell-GUI (mittels XAML-Datei) geschrieben, was eine ListBox mit Einträgen enthält. Nun versuche ich die Einträge aus der ListBox aus einem zweiten Thread heraus zu löschen. Der Aufruf:

$syncHash.GUIObj.ListBox.Dispatcher.invoke([action]{$syncHash.GUIObj.ListBox.Items.Clear()},'Normal')

schlägt jedoch fehl. Weiss jemand Rat? Danke im Voraus.

Physical Disk vergrössern mit PS

$
0
0

Hallo Zusammen

Evtl. bin ich hier nicht richtig aber ich versuche es einmal.

Auf meiner Server 2012 habe ich 2 Storagepool. Ich habe zusätzlich 2 neue HDD ( 8TB ) hinzugefügt.

Im LSI MEGARAID Storage Manager werden die neuen Disk angezeigt und auch die neue Grösse von 36.3 TB.Im Server Manager wir aber immer noch die Grösse von 29.1 TB angezeigt.Besteht die Möglichkeit via PS die Grösse anzupassen?

Vielen Dank für eure Hilfe.

Grüsse

PS - rename-item filename newname mit Leerzeichen

$
0
0

Hallo Zusammen,

ich verzweifle leider.

Ich habe mir ein Script geschrieben, dass einen Datei analysiert und eine andere dann dementsprechend umbennent.

Am Ende des Scripts erhalte ich folgende Ausgaben:

echo $filets, $newfile

2015-02-09_21-10-22_Stargate  Atlantis_Der Eindringling.ts (Variabel: $filets)
S02E02-Stargate: Atlantis-Der Eindringling.ts (Variabel: $newfile)

Und das ist meine letzte Aktion:

ren $filets $newfile

Daraufhin erhalte ich:

ren : Cannot rename the specified target, because it represents a path or
device name.
At D:\PowerShellScripts\test\SeriesRenamer_Release1.ps1:93 char:1
+ ren $filets $newfile
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Rename-Item], PSArgumentEx
   ception
    + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.RenameIte
   mCommand

Ich musste feststellen, wenn ich den "NewName" ohne Leerzeichen schreibe klappt es, aber das ist eigentlich nicht mein Ziel.

Ich habe bereits mehrere Sachen probiert aber es will einfach nicht.

Nachstellen kann man es folgendermaßen (gesetz dem Fall die Dateien liegen in dem Verzeichnis)

PS D:\PowerShellScripts\test> ren '.\2015-02-09_21-10-22_Stargate  Atlantis_DerEindringling.ts' 'S02E02-Stargate: Atlantis-Der Eindringling.ts'

Kann mir jmd helfen, bin absoluter Noob in Sachen PS.

Danke und VG


Im Verzeichnis Textdateien finden und diese bearbeiten

$
0
0

Win 7; PowerShell 4,0

Hallo liebe Leut',

bin Laie und bin vor kurzem über ein privates Projekt auf PowerShell gestossen.

Möchte in einem Verzeichnis mit Unterverzeichnisse Textdateien finden und diese bearbeiten. Im Einzelnen laufen diese.

Aber wie kann ich die 2 Befehle verbinden?

Im Einzelnen lauten sie so:

gci $Path -recurse | ?{$_.Name -like '*nfo'}

Diesen Befehl wollte ich nun mit folgendem Befehl verbinden:

(Get-Content $Path) |
Foreach-Object {$_ -replace $althttp, $neu} |
Set-Content $Path |

Für Eure Mühe möchte ich mich im Voraus bedanken und verbleibe mit

LG

Svensus

Im Verzeichnis Textdateien finden und diese bearbeiten

$
0
0

Hallo,

eigentlich wollte ich auf birma antworten, es kommt aber immer die Meldung im Firefox, dass javascript:void().

Wenn dies hier der falsche Weg ist, um auf mein Anliegen zu antworten, möchte ich mich entschuldigen.

So ist dies erst einmal ein Test. Bin neu hier.

LG

Svensus

Array erweitern

$
0
0

Hallo,

ich möchte gerne zwei Listen in ein Array schreiben. In der einen Liste stehen die Computernamen und in der anderen die IP Adresse. Da die Listen bereits sortiert sind fehlt mir nur der Befehl die Listen richtig einzulesen.

So lese ich die erste Liste ein.

$File = Get-Content C:\temp\PCNamen.txt
 

Kann mir jemand sagen wie ich das Array erweitere?

Vielen Dank

Norbert


IT Berater

Start-Transcript Probleme mit Umbrüchen

$
0
0

Hallo zusammen,

ich nutze Transcript, um mir sämtlichen Output des Skriptes ausgeben zu lassen.

Aufruf sieht wie folgt aus.

start-transcript -path $LogPath

...

Stop-Transcript 

Wenn ich das Skript händisch über eine 64Bit Powershell aufrufe, erhalte ich den selben Output wie er auch über die Konsole ausgegeben wird. Mit anderen Worten wie ich es auch erwarte.

Verpacke ich das Skript in ein WISE Installer Paket (kein .MSI, sondern .EXE), also in in einen Wrapper, bekomme ich im Output deutlich mehr Zeilenumbrüche und die Formatierung des Logs ist ganz anders.

Händischer Aufruf:

WARNUNG: Die Namen einiger importierter Befehle auf Modul "Modul" enthalten nicht genehmigte Verben, sodass deren...

Aufruf übers Paket:

WARNUNG: Die Namen einiger importierter Befehle auf Modul "SDFModule" enthalten

 nicht genehmigte Verben, sodass deren...

Wo kommt der "verfrühte" Zeilenumbruch her ? Es wirkt ein bisschen so, als ob es bei der Ausführung über den Wrapper eine andere Längenbeschränkung pro Zeile gibt.




Verzeichnisnamen das Ende entfernen

$
0
0

Hallo liebe Community,

habe da einen Befehl:

‘Ich bin ein Beispiel 2015 das Ende’ -replace ‘(\d{4})(.*$)’,’$1' -replace ‘(\d{4})’,’ ‘

welche mir das Ende inclusive dem Jahr entfernt.

Meine Frage lautet nun wie kann ich dies bei einem Verzeichnisnamen anwenden? Oder gibt es da etwas besseres? Mein Befehl an dem ich herum doktere sieht so aus:

Get-ChildItem $path -Recurse -Force
# um das Verzeichnis aufzurufen
# und dann den Verzeichnisnamen bearbeiten mit
| rename-item -path $_.Fullname ($_.BaseName).Replace'(\d{4})(.*$)’,’$1' -replace (‘(\d{4})’,’ ‘) 

Diesen Namen würde ich dann übernehmen für die Dateien, welche sich in dem Verzeichnis befinden. Diese habe verschiedene Dateierweiterungen wie .nfo, .avi, etc.

Für Eure Mühe bedanke ich mich.

LG

Svensus

DNS Registration disablen, Newbee Frage

$
0
0

Hallo zusammen,

ich habe ein gutes Muster für DNS Registration gefunden, da PowerShell für mich Neuland ist.

http://www.powershellmagazine.com/2014/03/07/pstip-how-to-disable-dns-registration-with-powershell/

(Get-WmiObjectWin32_NetworkAdapter -Filter"NetEnabled=True").

da ich weiß welchen Adapter es betriff und ich nur den einen Adapter setzen möchte habe ich den Filter auf diesen Adapter gesetzt.

 (get-wmiobject win32_networkadapter -filter "ServiceName='ewusbmbb'").GetRelated("Win32_NetworkAdapterConfiguration').SetDynamicDNSRegistration(false$,false$)

wenn ich ENTER drücke kommen zwei >> und der Befehl wird nicht ausgeführt?

die runden Klammer habe ich schon entfernt - hat aber keine Änderung gebracht?


Chris

String von Rechts kürzen

$
0
0

Hallo,

ich habe einen String (z. B. abc023, oder abcd034)

Ich möchte gerne eine feste Anzahl von rechts(3 Stellen) "abschneiden", als Ergibniss also "abc" oder "abcd".

Von links mit Substring kein Problem...aber wie stelle ich das von rechts an!?

Danke für eure Hilfe!


Gruß Toni


DNS Registration disablen,

$
0
0

Hallo zusammen,

ich habe ein gutes Muster für DNS Registration gefunden, da PowerShell für mich Neuland ist.

http://www.powershellmagazine.com/2014/03/07/pstip-how-to-disable-dns-registration-with-powershell/

(Get-WmiObjectWin32_NetworkAdapter -Filter"NetEnabled=True").

da ich weiß welchen Adapter es betriff und ich nur den einen Adapter setzen möchte habe ich den Filter auf diesen Adapter gesetzt.

 (get-wmiobject win32_networkadapter -filter "ServiceName='ewusbmbb'").GetRelated("Win32_NetworkAdapterConfiguration').SetDynamicDNSRegistration(false$,false$)

wenn ich ENTER drücke kommen zwei >> und der Befehl wird nicht ausgeführt?

die runden Klammer habe ich schon entfernt - hat aber keine Änderung gebracht?


Chris


Zwei CSV - Dateien als Input und eine neue CSV - Datei als Output

$
0
0

Hallo,

ich bin noch Neuling mit Powershell, möchte aber gerne meine Aufgaben damit erledigen.

Eine dieser Aufgaben ist es, Information aus zwei CSV-Dateien auszulesen und diese dann den Output in eine neue CSV-Datei schreiben.

Konkret habe ich folgende Situation.

CSV - Datei A mit einer Liste von Nummern

Header A

111 

333

555

CSV - Datei B mit einer Liste von Nummern und Werten 

Header B

111, WertA111, WertB111, WertC111

222, WertA222, WertB222, WertC222

333, WertA333, WertB333, WertC333

444, WertA444, WertB444, WertC444

555, WertA555, WertB555, WertC555

Output soll CSV - Datei C sein mit exact demselben Format wie B, aber soll nur die Nummer und Werte enthalten, die aus A ausgelesen wurden. Also in dem Fall:

Header B

111, WertA111, WertB111, WertC111

333, WertA333, WertB333, WertC333

555, WertA555, WertB555, WertC555

Wie müssen die Befehle lauten, um so ein Konstrukt zu basteln?

Wäre für jede Hilfe dankbar.

Select-String bei einem Mehrzeilgem String

$
0
0

Hallo!

ich lass mir den Quelltext einer Webseite mit folgendem Befehl in eine Varable schreiben:

 $page = (New-Object System.Net.WebClient).DownloadString("https://www.web")

Nun wollte ich hier den String "Hilfe" suchen um heraus zu finden, dass die Seite noch einigermaßen läuft.

 $page | Select-String "Hilfe" -SimpleMatch

Jedoch wird mir dann die ganze Seite (Variable) ausgegeben und nicht nur der einzelne String. Wie kann man das besser lösen?

VG niesel

Powershell - Verzeichnis Berechtigungen anpassen

$
0
0

Hallo zusammen,

folgende Konstellation:

Wir haben ein "UserHome$" Verzeichnis auf einem Windows 2003 Server bei dem die Berechtigung nur zum Teil vererbt werden. Nun muss ich in jedem Unterordner (ca. 808) eine Gruppe hinzufügen. Da ich nicht jeden Ordner einzeln anpacken will, würde ich das gerne in der PowerShell skripten. Da liegt auch schon das Problem, da ich bisher nicht viel Erfahrung darin habe.

Vorgehen wäre dieses:

1. Existierende Ordner auflisten

2. Besitz übernehmen

3. Vererbung aktivieren

4. Besitz an User übergeben

Sollte dies vom Ablauf her passen, oder habe ich etwas wichtiges vergessen?

Aktuell hänge ich bei Punkt 2. dem Besitz übernehmen und Vererbung (icacls Befehl tut, PS Skript nicht) aktivieren.

Testskript für Besitz und Vererbung:

$ordner = dir "C:\tmp\ScannedDocuments" -Recurse
foreach($path in $ordner) {
  $acl = get-acl $path
  $isProtected = $false
  $preserveInheritance = $false
  $acl.SetAccessRuleProtection($isProtected, $preserveInheritance)
  Set-Acl $path -AclObject $acl
}

icacls befehl der funktioniert:

icacls.exe "C:\tmp\ScannedDocuments" /Reset /t /c /q

Bin dankbar für jeden Tipp oder Unterstützung.

Viele Grüße

Rolf


- Carpe Diem - -Ist mir jetzt egal, ich lass das jetzt so.-

Hilfe run DSAdd group command mit Powershell

$
0
0

Hallo zusammen,

ich brauche mal eine Idee oder besser Lösung. Ich habe mir eine Funktion geschrieben die auch generell funktioniert mit 

New-QADGroup -name "$($loc.name)_All_Users" -SamAccountName "$($loc.name)_All_Users" -grouptype "Security" -GroupScope Universal -Description "C IN WP BB - AD - Updated $($timestamp) - collects all enabled User for $($loc.name)" -ParentContainer "OU=Services,OU=Groups,$Loc"

dies ist in meinem Enviroment aber zulangsam zumindestens für die spätere User maintance. ist nur ein beispiel hier der Inhalt aus einer Funktion die ich mir nun mit DSADD geändert habe.. dies funktioniert aber irgendwie nicht ganz.

Function CreateGroupLocation { Write-Host "proceed Group Maintaining $(DomName)" $Loc -ForegroundColor yellow -BackgroundColor DarkRed $MOBIrionGroup = Get-QADGroup -SamAccountName "$($loc.name)_All_Users" -SearchRoot "OU=Services,OU=Groups,$Loc" -SearchScope Subtree Write-Host $MOBIrionGroup if (!$MOBIrionGroup){ Write-Host "not exist will created now ", "$($loc.name)_All_Users" -ForegroundColor Blue -BackgroundColor DarkGray

#New-QADGroup -ParentContainer "OU=Services,OU=Groups,$Loc" -name "$($loc.name)_All_Users" -SamAccountName "$($loc.name)_All_Users" -grouptype "Security" -GroupScope Universal -Description "C IN WP BB - AD - automatic maintained - daily - collects all enabled User for $($loc.name)"

$EXEFile = "c:\Windows\System32\dsadd.exe group" $Cline1 = """OU=Services,OU=Groups,$Loc""" $CLine2 = "-scope U -secgrp yes -Desc ""C IN WP BB - AD - automatic maintained - daily - collects all enabled User for $($loc.name)""" Write-Host ($EXEFile, $CLine1, $CLine2) Invoke-expression "$EXEFile $Cline1 $CLine2" #Invoke-Command -ScriptBlock { # dsadd group "OU=Services,OU=Groups,$($Loc)" -samID $loc.name_All_Users -scope U -secgrp yes -Description "C IN WP BB - AD - automatic maintained - daily - collects all enabled User for $($loc.name)" #} } else{ Write-Host "$($loc.name)_All_Users exist allready " -ForegroundColor yellow -BackgroundColor DarkGreen #Start-Sleep -Seconds 5 } }

die anzeige mit write-host ist soweit ok und eigentlich sollte das doch auch so in invoke-expression ausgefürhrt werden oder bin ich da auf dem Holzweg?

DOM1\bdp1_All_Users
bdp1_All_Users exist allready 
OU=bln3,OU=de,OU=lda,DC=DOM1,DC=contoso,DC=com

proceed Group Maintaining  OU=bln3,OU=de,OU=lda,DC=DOM1,DC=contoso,DC=com

not exist will created now  bln3_All_Users
c:\Windows\System32\dsadd.exe group "OU=Services,OU=Groups,OU=bln3,OU=de,OU=lda,DC=DOM1,DC=contoso,DC=com" -scope U -secgrp yes -Desc "C IN WP BB - AD - automatic maintained - daily - collects all enabled User for bln3"

OU=bry1,OU=us,OU=lda,DC=DOM1,DC=contoso,DC=com

proceed Group Maintaining  OU=bry1,OU=us,OU=lda,DC=DOM1,DC=contoso,DC=com
DOM1\bry1_All_Users
bry1_All_Users exist allready 
OU=cgu1,OU=cn,OU=lda,DC=DOM1,DC=contoso,DC=com

kann mir da jemand einen Tip geben oder sagen was ich da falsch mache?

danke Michael


Michael

Viewing all 2314 articles
Browse latest View live


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