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

Ausgabe weiterverarbeiten

$
0
0

Hallo liebe Community,

ich bin leider noch blutiger PS Anfänger, möchte aber trotzdem gerne ein kleines Script erstellen. Und zwar möchte ich die DFS Pfade sichern und zwar alle (von allen Stämmen).

Ich fange mit folgendem an:

Get-DfsnRoot | select Path

Dadurch kenne ich die Stämme und dann müsste ich ja weitermachen mit

dfsutil root export \\domain.local\SHARE$  „D:\DFS\DFSBCK (get-date -format yyyy-MM-dd).xml“

Ich scheitere daran die Ausgabe zu verwerten eben in genau diesen Export befehl. Mir ist wichtig, das automatisch alle Stämme erkannt werden und dann die DFS Pfade exportiert werden. Hat jemand eine Idee?

Grüße


Wann wird Windows 10 Build 10240 endlich stabil?

$
0
0

Hallo Microsoft Team,

wann wird Windows 10 Build 10240 endlich stabil? Das wär meine Frage!

- Startmenü, Cortina und Notification Center funktionierten bei mir nach 3 Tagen schon nicht mehr, ließen sich nicht mehr öffnen!--> Folge war Neuinstallation. Der Bug lies sich nicht so einfach beheben!

- Einmal verschwand das Desktop Wallpaper von alleine! War einfach wieder herzustellen!

- Ein Update das sich ständig in einer Endlos Schleife neu installiert hatte ich auch!

- Des weiteren sind Euere USB 3.0 Treiber für Regennass USB 3.0 Chip veraltet. USB i3.0 ist damit langsam. Die neuesten USB 3.0 Regennass Treiber werden über Windows Update / Treiber aktualisieren im Gerätemanger nicht angeboten, bringen aber nach der Installation deutlichen USB 3.0 Leistungsschub!

- Beim herunterfahren von Windows 10 Build 10240 kommt ständig ein "Read Fehler"´ vom RAM, der seit den Insider Preview schon bekannt ist!

Ich mocht mit meinem PC Arbeiten und nicht ständig warten oder gar Neuinstallationen durchführen müssen, weil das Betriebssystem nicht geht!

Warum veröffentlicht Ihr eine Build 10240 die instabil ist für den Endkunden????

Viele Grüße

Bernhard

Problem mit Copy-ToZip des Powershellpacks

$
0
0

Hi,

 

ich habe das PowershellPack installiert und das Modul Filesystem geladen. Die Kommandos die ich benötige (New-Zip und Copy-ToZip) sind vorhanden.

 

Das Problem ist, dass ich mit einem einfachen Zweizeiler versuche ein Zip zu füllen, dies klappt nicht. Das Zip wird erstellt, aber es bleibt leer obwohl Copy-ToZip was zu machen scheint und die Dateien existieren.

Hier das "Skript":

[code]

New-Zip test.zip
Copy-ToZip -File testdb.sql -ZipFile test.zip
Copy-ToZip -File testdb.ps1 -ZipFile test.zip

[/code]

Die Datei test.zip ist genau 24 bytes lang, das ist Sie nach dem CmdLet New-Zip

Die beiden Copy-ToZip scheinen zwar etwas zu machen, aber das Zipfile ändert sich nicht. Es bleibt leer. Die beiden genannten Dateien existieren.

New-ADUser mit -Instance bringt Fehlermeldung, dass der Parameter "Instance" nicht gebunden werden kann

$
0
0

Moin,

ich möchte mit New-ADUser einen neuen Benutzer anlegen und mit der Angabe -Instance von einem anderen User kopieren. Anleitungen dazu gibt es im Internet ja genug. Auch Microsoft hat hier eine: https://technet.microsoft.com/en-us/library/ee617253.aspx

Ich habe Methode 1 verwendet, so dass mein Befehl im Prinzip so aussieht:

$userInstance = Get-ADUser -Identity "saraDavis"
New-ADUser -SAMAccountName "ellenAdams" -Instance $userInstance -DisplayName "EllenAdams"

Ich habe auch schon probiert andere Parameter wegzulassen, bis hin zu einem New-ADUser nur mit der Angabe von -Instance.

Ich bekomme jedoch immer wieder folgende Fehlermeldung:

Der Parameter "Instance" kann nicht gebunden werden. Der Wert "CN=[...]" kann nicht in den Typ
"Microsoft.ActiveDirectory.Management.ADUser" konvertiert werden. Fehler: "Der Wert "CN=[...]" vom Typ
"Deserialized.Microsoft.ActiveDirectory.Management.ADUser" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADUser" konvertiert werden."
    + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.NewADUser

Den richtigen Benutzer hat er gefunden. Er wird unter "CN=" korrekt angegeben. Ich habe ihn hier entfernt.

Ich kann zu dieser Fehlermeldung nichts im Internet finden. Weiß jemand, wie ich das beheben kann?

Skript zum Abfragen ob lokaler Computerkonto oder Domäne

$
0
0

Hallo,

einen Computer per Powershell in die Domäne aufnehmen bekomme ich noch hin aber eine
Abfrage machen die feststellt ob der Computer bereits in der Domäne ist und wenn nicht ihn dann in
Domäne aufnimmt, bin ich überfragt.
Kann mir jemand helfen ?

Gruß

3spaltige Tabelle in Variable/Array ablegen und Werte hinzufügen

$
0
0

Hallo

Ich versuche die folgende Beispieltabelle als Eingabe für die Konfiguration der DHCP-ServerOption zu verwenden.

Dazu wollte ich ein Array befüllen ähnlich wie dies hier:

ID               Name            Wert
3                Router           IP1
5                Nameserver   IP2,IP3
6                DNS              IP4

Anschließend will ich durch das Array mit einer Schleife und für jede ID die entsprechenden Parameter an das CMDLet übergeben.

Ich schaffe es noch nicht mal diese Werte abzulegen.

mir fehlen hier Grundlagen, ich lese und lese aber nichts gelingt.

Wie speichere ich Werte in einer dreispaltigen Tabelle und erweitere diese?

Grüße

Martin

Dateien in versch. Ordnern finden -> Ausschneiden und mit entspr. Ordnern neu erstellen

$
0
0

Guten Tag werte Technet-Community,


ich hoffe, es ist kein zu delikates Problem, eventuell sehe ich auch den Baum vor lauter Wäldern nicht.

Mit Powershell sollen Unterordner durchsucht werden nach bestimmten Dateitypen. Sofern er welche findet, soll er diese herausschneiden und in einem neuen Pfad dann die gleiche Ordnerstruktur erstellen, jedoch nur mit der Datei, die herausgeschnitten wurde.

Also z.B.:


Durchsuchung der verschiedenen Ordner

Pfad A                                                                           Pfad B

Ordner A                                                                      Ordner A
  |___Ordner Aa                                                                |___Ordner Aa
     |____Ordner Aaa                                                              |____Ordner Aaa
         |____Dateityp.lomi  -------AUSSCHNEIDEN--------->              |____Dateityp.lomi
  |___Ordner Ab                                                        

Ordner B                                                                            Ordner B
  |___Ordner Ba                                                                    |___Ordner Ba
     |____Dateityp.lomi      -------AUSSCHNEIDEN--------->              |____Dateityp.lomi
  |___Ordner Bb                                                                

Ordner C
  |___Ordner Ca                                                               Ordner C
     |____Ordner Caa                                                              |___Ordner Cb
  |___Ordner Cb             -------AUSSCHNEIDEN--------->              |____Dateityp.lomi
      |____Dateityp.lomi                    

Ich hoffe sehr, dass es nicht zu schwierig ist. Möglicherweise gibt es auch eine bessere Lösung, als mit Powershell.

Vielen Dank schon mal für die Kommentare!


Filter Win32_GroupUser Class > Invalid Query

$
0
0

Hi Everybody,

I use Powershell and WMI for many different purposes. But today I got in trouble with filtering on the Win32_GroupUser Class:

$query = "select PartComponent from Win32_groupuser where GroupComponent like '%Administrator%'"

Get-WmiObject -Computername "mycomputer.fq.dn" -Query $query

But then I got the Error:

Get-WmiObject : Invalid query "select PartComponent from Win32_groupuser where Path like '%Administrator%'"
At line:3 char:1
+ Get-WmiObject -Computername "mycomputer.fq.dn" -Query $query
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

When I delete the filter and just run:

$query = "select PartComponent from Win32_groupuser"

The output is just fine..

On the Win32_Process Class I discovered:

$query = "select * from win32_process where Name like '%exe%'"

is running fine and gives me all the .exe processes...

while this query wont work:

$query = "select * from win32_process where Path like '%exe%'"

resulting in the same error above.

When I remove the filter, everything is just fine again..

Has anyone ever found a solution for this or the cause? It seems like it happens on all OS (I tried Win7, SRV 2008R2, 2012, 2012R2..

Thank you in advance!





PowerShell 2.0 - Scheduled Task Properties | Eigenschaften der geplanten Aufgaben

$
0
0

Hallo,

ich bin seit gestern an einem PowerShell Skript für meine SharePoint Server 2010 Website, welches Daten hochlädt.
Da dieses Skript regelmäßig ausgeführt werden muss, habe ich mich für die geplanten Aufgaben von Windows entschieden. (scheduled Task) Nun habe ich die grundlegenden Dinge wie einen Trigger erstellt, und mein Skript wird auch ausgeführt. Allerdings mangelt es an einigen speziellen Eigenschaften, bei denen ich nicht weiß wie ich diese setze. Auch 'googlen' hat mir leider nicht weitergeholfen, da das Netz übersäät mit PowerShell V3 & V4 Beispielen ist, in denen die ganze Angelegenheit bedeutend einfacher zu sein scheint und für meinen Anwendungsfall leider nicht kompatibel ist, da neue Versionen der PowerShell ein höheres Framework nutzen, SharePoint jedoch nur die Version der PowerShell 2.0.

Die Eigenschaften, welche ich bei meiner Aufgabe via Skript nicht gesetzt bekomme sind:
- Allgemein -> Konfigurieren für: .. Standardmäßig ist Windows Vista und Server 2008 ausgewählt, ich möchte jedoch Win7
- Allgemein -> Mit höchsten Privilegien ausführen
- Trigger -> Erweiterte Einstellungen -> Wiederholen jede: 2 Minuten
- Einstellungen -> Folgende Regel anwenden falls die Aufgabe bereits ausgeführt wird: Vorhandene Instanz anhalten

Anbei zur besseren Verständnis mein verwendeter SkriptCode:
$TaskName = "SkriptAufgabe"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\local\Skript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
$trigger = $triggers.Create(2)
$trigger.StartBoundary = $TaskStartTime.ToString("yyyy-MM-dd'T'HH:mm:ss")
$trigger.Enabled = $true
$Action = $TaskDefinition.Actions.Create(0)
$action.Path = "$TaskCommand"
$action.Arguments = "$TaskArg"
$rootFolder.RegisterTaskDefinition("$TaskName",$TaskDefinition,6,"System",$null,5)

Vielen Dank im voraus!
Mfg
YTMFB



Powershell im Hintergrund und dauerhaft ausführen

$
0
0

Hallo

Ich habe ein Powershellscript welches über ein Verzeichnis loopt und alle pdf dokumente die dort enthalten sind (werden immer wieder neue hineingestellt) ausdruckt. Ich würde dieses File gerne beim Systemstart (also nach dem booten) automatisch starten lassen und es soll nach dem Start natürlich dauerhaft im hintergrund laufen (auch nach dem Logout)

Wie kann ich das erreichen

2 Array gegeneinander Abgleich mit unterschiedlichen Feldbezeichnungen

$
0
0

Hallo Powershellgurus,

ich hab ein Problem bei einem Skript den ich gerade baue. Leider bin ich nicht gerade Fachmann was Powershellskripte angeht und hoffe daher auf eure Hilfe. Ich versuche eine Skript zu schreiben der 2 Arrays miteinander abgleicht. Das erste Array wird mit Daten aus ADUsern gefüllt und das zweite mit Ordnernamen von einem Verzeichnis bei mir auf der Festplatte. Mein Problem ist nun das ich nicht in der Lage bin die 2 Arrays miteinander abzugleichen. Ziel ist es am Ende eine Ausgabe zu bekommen die mir sagt ob User xlz einen Ordner hat der seinem Namen entspricht. Einfaches ja nein oder etwas vergleichbares reicht.

Zum vereinfachten Code:

#User zählen
$z = Get-ADUser -Filter * -SearchBase "OU=AX,OU=Standorte,DC=Test,DC=dir" | measure
$z.Count = ($z.Count-1)

Write-Host "Useranzahl  : " $z.Count
#----------------------------------
#Ordner zaehlen
$folder = "C:\Users\max.muster\Desktop\test"
$z2 = @(Get-ChildItem -Path $folder | Select-Object Name)
Write-Host "Ordneranzahl: " $z2.Count
#-----------------------------------
#User array füllen
$user = @(Get-ADUser -Filter * -SearchBase "OU=AX,OU=Standorte,DC=Test,DC=dir" | select-object SamAccountName)
#---------------------------------------
#Ordner array füllen
$ordner = @(Get-ChildItem -Path $folder | Select-Object Name)

#läuft so oft wie User da
for($y=1;$y -le $z.count; $y++){

    #läuft so oft wie Ordner da
	for($x=1;$x -le ($z2.count+1); $x++){

	if($folder[$x] -like $user[$y]){
			write-host "$user[$y]      | Ja | "
		}
	if($x -eq ($z2.count+1)){
            Write-Host "| Nein | ", $user[$y]
}}}

Ausgabe $user

SamAccountName
--------------
Admin.Meister
Meister.Test
Max.Muster
Test.Neuer
Admin.Test 

Ausgabe $ordner

Name
----
Max.Reuter
Admin.Meister
Test.Test
Test.Neuer
Admin.Test

Ich vermute mal nun das mein Problem darin liegt das ich Äpfel mit Birnen vergleiche da "SamAccountName" nicht gleich "Name" ist und somit dies nicht funktioniert. Leider weis ich nicht wie man diese "Feldbeschreibung/Name" greift so das ich einen Abgleich machen kann. Ich habe es auf mit diff und Compare-Object probiert, leider ohne Erfolg. Ich hoffe nun das jemand mein Problem versteht und mir helfen bzw. es mir erklären kann. 2 Tage googeln haben mir leider auch nicht geholfen.

MFG

Helmchen

WLAN-Verbindungsstatus mit PowerShell ändern - verbunden/nicht verbunden

$
0
0

Hi,

entgegen den Vorschlägen im Netz, möchte ich per Script nicht den Adapter enablen/disablen, sondern nur den Verbindungsstatus umschalten. So wie es auch die Fn-Tastenkombination an vielen Geräten vorsieht. Diese Schalten nicht den Adapter ab, sondern ändern nur den Verbindungsstatus. Nach zwei Stunden suchen im Netz und in den WMI-Klassen muss ich jetzt passen.

Herausgearbeitet habe ich bereits, wie der Verbindungsstatus abfragt werden könnte:

If ( (
Get-CimInstance -ClassName cim_networkadapter | Where-Object { $_.NetConnectionID -eq 'Wireless Network Connection'}
).NetEnabled ) { Write-Host "Die WLAN-Verbindung ist derzeit aktiviert."
# hier WLAN-Verbindung disablen } else { Write-Host "Die WLAN-Verbindung ist derzeit deaktiviert."
# hier WLAN-Verbindung enablen }

...allerdings ist die Eigenschaft .NetEnabled readonly. Es muss also eine andere Lösung her.

Hintergrund ist eine defekte Soft-Taste an einem Notebook, wodurch ich die WLAN-Verbindung nicht mehr aktiviert bekomme. Bei der Suche nach GUI-Software habe ich mir schließlich noch Maleware eingefangen, so dass ich eine Systemwiederherstellung machen musste. Ich benutze Windows 7 64Bit und PSVersion 2.0.

Im Netz habe ich einige Anfragen zu diesem Thema gefunden, so dass es ein allgemeines Interesse hierzu geben könnte.

Vielen Dank

Michael L.


PS2exe und start-process

$
0
0

Hallo zusammen,

ich habe ein kleines Script mit ps2exe compiliert.

Das script ließt nur über Read-host einen Wert ein.

Die fertige exe möchte ich über ein anderes PS-script starten:

start-process -filepath C:\datei\test.exe -credential $credential.

Hintergrund ist, das ich die exe mit einem anderen User starten möchte.

Das Problem ist:

Das Programm läßt sich starten, aber die Eingabe der Tastatur funktoniert nicht. Es kommt auch keine Fehlermeldung.

starte ich die exe von Hand ist alles ok.

Powershell script probleme

$
0
0

Hallo, ich habe ein kleines Script geschrieben welches über einen bestimmten Ordner im Netzwerk läuft und alle darin befindlichen PDF's ausdruckt und dann das gedruckte File löscht.

Das Script endet nicht.

Nun wollte ich das Script als Task im TaskScheduler einrichten damit es immer ausgeführt wird

Leider funktioniert es hier aber nicht wirklich. Lasse ich es im PowerShell ISE laufen funktioniert alles bestens. Als Task allerdings scheint es zu laufen denn das löschen funktioniert aber der Druck erfolgt nicht.

Hier mein Script:

$period = [timespan]::FromSeconds(20)
$lastRunTime = [DateTime]::MinValue

$searchPath = "\\axsrv\pool\PROD\ItemLabel"
$adobe="C:\Program Files (x86)\Adobe\Reader 11.0\Reader\acrord32.exe"
$archive="\\axsrv\pool\PROD\ItemLabelArchive\"

while (1)
{
    while ((Get-Date) - $lastRunTime -lt $period)
	{
        Start-Sleep -Milliseconds 500

    }
    $lastRunTime = Get-Date
	$IncomingPdfs = Get-ChildItem $SearchPath
    ForEach($NewPdf in $IncomingPdfs)
	{
        if($NewPdf)
        {
            $fullName = ($NewPdf).FullName
            $archive += ($NewPdf)
			Start-Process $adobe -ArgumentList "/N /s /T $fullName \\axdc1\BI_PR107"
            Start-Sleep -Milliseconds 10000
            Kill -processname AcroRd32*
            remove-item -path ($NewPdf).FullName


        }
	}

}

Wer kann mir weiterhelfen?

Schlechte Performance einer foreach Schleife

$
0
0

Hallo Powershell-Gemeinde,

 

Ich lese eine Textdatei mit 20 Suchwörtern ein, welche in einer lokalen html Datei von 380kb mit 4400 Zeilen zur weiteren Verarbeitung gefunden werden sollen.

Dieser Vorgang dauert ca. 50 Sekunden. Da ich ähnliche Abfragen für weitere Dateien im script habe, dauert ein Durchlauf ca. 6 Minuten.

Hierfür nutze ich den unten angegeben code.

Lässt sich die Performance evtl. über einen anderen weg in der Powershell beschleunigen?

$ReadRadioplay = Get-Content -Path 'C:\Program Files\Scripte\SucheHörspiele.txt'

$PartialResultRadio0 = Foreach ($Radioplay in $ReadRadioplay)
{
Select-String -Path 'C:\Program Files\Scripte\SourceMonthlyRadioPlay.html' -List -Pattern "(.*?)$Radioplay(.*?)" -Context 0, 1
Danke für eure Ideen!



Uninstall abfragen

$
0
0

Hallo,

ich habe ein Script zum deinstallieren  und installieren von MSI Dateien erstellt!

Nachdem eine msi Datei deinstalliert wurde soll natürlich die andere MSI installiert werden.

Zwischen den Vorgängen "warte" ich mit

Start-Sleep -count 30

Das reicht mir zwar aber ich würde es gerne optimieren und den Status irgendwie abfragen.

Könnt ihr mir Denkanstösse geben oder auch Tipps wie ich das abfragen kann?!

Vielen Dank


Gruß Toni! Wenn Dir meine Antwort hilft, markiere sie bitte als Antwort! Vielen Dank!

blöde Frage zum Starten der Windows Powershell

$
0
0

Hallo,

ich habe eine (blöde) Frage zur Windows Powershell. Auf unseren Windows Server 2008 Computern starten 2 verschiedene Powershell Fensterfarben.
Gehe ich als ausführen den String "powershell" öffnet sich ein schwarzes Powershell Fenster.

Gebe ich als ausführen den String "power" öffnet sich eine ander Fenterfarbe und Stil.

Warum?

Viele Grüße
Roland

Remoteabfrage, ob ein User am Rechner angemeldet ist

$
0
0

Hallo Zusammen,

möchte gerne Abfragen, ob ein User an einem Client angemeldet ist und dies in 2 Dateien ausgeben. Habe folgenden Skript dazu geschrieben:

#Ausgabe der User
$datei = "Userdatei"
$datei1 = "Userdatei1"

#Abfragen der User mit Credentials
$username = Domäne\name
$password = Passwort.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential `
            -argumentlist $username, $password
$Computernames = Get-content "Abfragedatei"
foreach ($Computername in $Computernames) {
if (Get-WmiObject -Class "Win32_ComputerSystem" -ComputerName (Get-Content "Abfragedatei") | fl name  -Authentication Default -Credential $cred) {
"$Computername" | Add-Content $datei
}
else {
"$Computername" | Add-Content $datei1
}
}

Ich bekomme folgende fehlermeldung:

Get-WmiObject : Der Parameter ist ungültig.
In Zeile:7 Zeichen:5
+ if (Get-WmiObject -Class "Win32_ComputerSystem"  -Authentication Default -Creden ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Hat jemand eine Idee?

VG

Hanuta

Batch aus Powershell aufrufen (+ ein paar Anforderungen)

$
0
0

Hallo zusammen,

ich schreibe gerade ein Computer-Startup Script von Batch auf Powershell um.
Im neuen Powershell mache ich zuerst vielerlei Dinge. Gegen Ende des Scripts rufe ich 3 Batch-Scripte auf.

In etwa so sieht das momentan so aus:

Powershell-Commands
Powershell-Commands
Powershell-Commands
Powershell-Commands
Powershell-Commands
Powershell-Commands

Start-Process BatchScript1.cmd -Wait -NoNewWindow

Start-Process BatchScript2.cmd -Wait -NoNewWindow

Start-Process BatchScript3.cmd -Wait -NoNewWindow

Powershell-EndCommand

Ich habe folgende Anforderungen:

- BatchScript2.cmd darf erst aufgerufen werden, wenn BatchScript1 fertig ist. BatchScript3.cmd darf erst aufgerufen werden, wenn BatchScript2 fertig ist.

- Das Powershell-EndCommand darf erst ausgeführt werden, wenn alle 3 Batch-Scripte durchgelaufen sind.

- Ich möchte zusätzlich eine maximale Runtime bei den Batch-Scripten haben. Damit meine ich, dass wenn BatchScript3.cmd länger als 10 Minuten läuft, dann soll dieses abgebrochen werden, damit das Powershell-Script weiterlaufen und beendet werden kann.

Könnt ihr mir da bitte Vorschläge geben, wie man das am besten macht.

Vielen Dank im Voraus

Invoke-webrequest und navigieren auf Webseiten

$
0
0

Hallo,

da es ja seit Powershell 3.0 das cmdlet“ invoke-webrequest“ gibt, möchte ich webseiten nicht mehr über Netzklassen ansteuern.

Zur Zeit melde ich mich auf einer Webseite mit meinen Anmeldedaten und dem cmdlet Invoke-Webrequest an. Um weiterführende Links zu öffnen, nutze ich die Netzklassen Methode „New-Object-ComObjectInternetExplorer.Application“

Hierbei muss allerdings für jede weitere Seite die aufgerufen werden soll, ein Zeitpuffer eingebaut werden.

Auch habe ich mit "invoke-webrequest" weitere Möglichkeiten der Verarbeitung des contents

Wie kann ich nun nur mit "invoke-webrequest" nach der Anmeldung auf weiterführende Links zugreifen?

Hier mein script, welches beide Methoden nutzt und mit Zeitverzögerung funktioniert:

# Credentials, first login
$Username = 'MyName'
$password = get-content 'C:\Password.txt' | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
$StartURL = 'http://www.Webite/wbb4/'
$ie = Invoke-WebRequest -URI $StartURL -Credential $cred

# navigate to second link and save html page
$ie = New-Object -ComObject InternetExplorer.Application
$ie.visible = $false
$ie.Navigate('http://www.Website/wbb4/index.php/Board/Aktuelle')
Start-Sleep -Seconds 4
$ie.Document.body.outerHTML | Out-File -FilePath 'C:\save.html'

Einfach den zweiten Link ebenfalls mit invoke-webrequest zu öffnen, funktioniert nicht. Der Zugriff wird verweigert:

# navigate to second link and save html page
$StartURL2 = 'http://www.Website/wbb4/index.php/Board/Aktuelle'
$ie2 = Invoke-WebRequest -URI $StartURL2  
Ist es überhaupt möglich, mit Invoke-Webrequest nach der Anmeldung auf weitere Links zuzugreifen? Oder habe ich hier einen falschen Denkansatz?

Bin für jede Idee dankbar!


Viewing all 2314 articles
Browse latest View live


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