Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Matze1708

Powershell Webrequest

Empfohlene Beiträge

hallo zusammen,

 

ich habe ein Skript mit dem ich einen Webrequest zu einem Skript herstelle. Das Skript erledigt mit ein paar Sachen für eine Telefonanlage.

 

Das Skript läuft auf einem IIS8.5 mit PHP 7

 

aktuell ist die Site noch Anonym zuerreichen. Daher läuft mein Skript auch noch problemlos. Als wir Heute auf Windows Authentifizeirung umstellen .. War schnell klar das mein Skript nicht mehr so läuft wie es soll.

param(
[string]$HL)



$urlpart1 = "http://xxxx/cfw_Masse.php?HL="
$urlCall = $urlpart1+$HL
 

$httprequest=[system.Net.HttpWebRequest]::Create($urlCall);
$data = $httprequest.getresponse();
$stat = $data.statuscode;
$data.Close(); 

Im Netz habe ich was schönes gegoogelt und etwas angepasst, da mir das Skript sogar einen Status zurück gibt. Ob mir das was in der Aufgabenplanung bringt weiss ich nicht.

param(
[string]$HL)



$urlpart1 = "http://sastest.uni-gruppe.intra/cfw/cfw_Masse.php?HL="
$urlCall = $urlpart1+$HL

$username = "User"
$pw = "Passwort"
$domain = "Domain"

$req = [system.Net.WebRequest]::Create($urlCall)
#$req.Credentials = new NetworkCredential($username, $pwd, $domain); 
$req.UseDefaultCredentials = $true
try
{
    $res = $req.GetResponse()
}
catch [System.Net.WebException]
{
    $res = $_.Exception.Response
}

$int = [int]$res.StatusCode
$status = $res.StatusCode
return "$int $status"

Aber er wirft mir einen Fehler mit dem new Networkcredential aus.

 

 

 

new : Die Benennung "new" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob

der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.

In C:\PS_Skript\umleitungLogin.ps1:14 Zeichen:20

+ $req.Credentials = new NetworkCredential($username, $pwd, $domain);

+ ~~~

+ CategoryInfo : ObjectNotFound: (new:String) [], CommandNotFoundException

+ FullyQualifiedErrorId : CommandNotFoundException

 

 

habt ihr da eine Idee für mich wie ich das passend hin bekomme?

 

Vielen Dank Gruß Matthias

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

 

ich habe es!

 

ALso zumindest der Code ist jetzt funktional.

 

Es muss heißen

param(
[string]$HL)



$urlpart1 = "http://XXX/cfw/cfw_Masse.php?HL="
$urlCall = $urlpart1+$HL


$username = "User"
$password = "PASS" | ConvertTo-SecureString -asPlainText -Force

$req = [system.Net.WebRequest]::Create($urlCall)
$req.Credentials = new-object System.Net.NetworkCredential($username, $password); 
#$req.UseDefaultCredentials = $true
try
{
    $res = $req.GetResponse()
}
catch [System.Net.WebException]
{
    $res = $_.Exception.Response
}

$int = [int]$res.StatusCode
$status = $res.StatusCode
return "$int $status"

Was leider noch nicht geht. Aber vielleicht gibt's das auch nicht.

 

Das ich im Verlauf vom Taskplaner erkennen kann ob der AUfruf ok war oder nicht ....Sprich den return Code in dem Verlauf anzeigen lassen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

schön, danke für die Rückmeldung. Bezüglich des Rückgabewerts: Es dürfte doch viel einfacher sein, den Status in eine eigene Logdatei zu schreiben. Die kannst du dann auch leichter auswerten, und das Format kannst du auch nach eigenem Bedarf steuern.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Was leider noch nicht geht. Aber vielleicht gibt's das auch nicht.

 

Das ich im Verlauf vom Taskplaner erkennen kann ob der AUfruf ok war oder nicht ....Sprich den return Code in dem Verlauf anzeigen lassen.

Bekommst du eine Fehlermedlung?

Eventuell muss die Variable $res vor dem try deklariert werden.

bearbeitet von magheinz

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

 

ich habe noch mal eine kleine Verständnis Frage,

 

zu erst, Das Skript logt jetzt immer mit, dazu musste ich noch HTTP Authentifizierung einfügen.

$urlpart1 = "http://xxxxx/cfw/cfw_Masse.php?HL="
$urlCall = $urlpart1+$HL


$username = "XXXX"
$password = "XXX" | ConvertTo-SecureString -asPlainText -Force

$req = [system.Net.WebRequest]::Create($urlCall)
$req.Credentials = new-object System.Net.NetworkCredential($username, $password); 
#$req.UseDefaultCredentials = $true
try
{
    $res = $req.GetResponse()
}
catch [System.Net.WebException]
{
    $res = $_.Exception.Response
}

$int = [int]$res.StatusCode
$status = $res.StatusCode




$LogFile = "C:\PS_Skript\log.log"
$FileExists = Test-Path $LogFile
    $DateNow = Get-Date -Format "dd.MM.yyyy HH:mm:ss" # Ermittelt das aktuelle Datum mit diesem Syntax 01.10.2013 10:00
    $FileInp = $DateNow + ' | ' + "Aufruf Umleitungstelefone, Status Code: "+$int+" "+$status                          # Setzt die Zeile für unser Logfile zusammen
    If ($FileExists -eq $True){ # Wenn dir Datei existiert reinschreiben
        Add-Content $LogFile -value $FileInp  # Zeile hinten an die vorhanden Einträge anhängen
    } else {
       New-Item $Logfile -type file # Wenn dir Datei nicht existiert anlegen
       Add-Content $LogFile -value $FileInp # und reinschreiben
    }



return "$int $status"


Was ich aber gern machen würde, das ich 2 Seiten über dieses Skript aufrufe. Geht das? Wie muss ich das tun?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×