pixel0815
Goto Top

Ein VBcript durch Powershell ablösen?

Hallo zusammen,

kann man dieses Script durch ein Powershellskript nachbilden?

Option Explicit

Dim IF_Name, IEApp
Dim wshShell, user, comp, client, baseUrl, url

' Enviroment auslesen  
Set wshShell = CreateObject( "WScript.Shell" )  
user=wshShell.ExpandEnvironmentStrings("%UserName%")  
comp=wshShell.ExpandEnvironmentStrings("%ComputerName%")  
client=wshShell.ExpandEnvironmentStrings("%ClientName%")  
if client = "%ClientName%" Then  
        client = ""  
end if


Function HTTPGet(URL)
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.visible = 0
  IEApp.navigate URL
  do while IEApp.Busy
  loop
  HTTPGet = IEApp.document.documentelement.outerhtml
  IEApp.quit
  Set IEApp = Nothing
End Function

' Beispiel URL:  
baseUrl = "http://10.246.0.112:8080/epa/WksPrnRegister?agnextid=1308432128"  
url = baseUrl + "&wshhost=" + comp + "&wshclient=" + client + "&prn=Zebra%20TLP2824&prnhost=" + client + "&prntemplate=LP2824-USB"  

HTTPGet(url)

Das wäre so superklasse face-smile

Gruß
Heiko

Content-Key: 271249

Url: https://administrator.de/contentid/271249

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: colinardo
Lösung colinardo 06.05.2015, aktualisiert am 07.05.2015 um 10:39:19 Uhr
Goto Top
Hallo Heiko,
das sähe dann so aus:
$url = "http://10.246.0.112:8080/epa/WksPrnRegister?agnextid=1308432128&wshost=$($env:COMPUTERNAME)&wshclient=$($env:ClientName)&prn=Zebra%20TLP2824&prnhost=$($env:ClientName)&prntemplate=LP2824-USB"  
(Invoke-Webrequest -Uri $url -Method GET).Content
Wobei deine Zeile 11 etwas verwirrend ist ... (if client = "%ClientName%" Then)
In VBS werden Batch-Variablen nicht aufgelöst face-wink

Grüße Uwe
Mitglied: pixel0815
pixel0815 06.05.2015 um 16:32:42 Uhr
Goto Top
Hallo Uwe,

ich glaub das ist auch nicht ganz wichtig.
Wenn das sowieo nicht funktioniert hat....... Ich werde das morgen einmal in der Citrix Session ausprobieren.
Das Skript ist total komisch in einer aktuellen Windows Server Umgebung. Ich hoffe das dies mit der Powershell nicht mehr so ist und es das tut was es soll......
Werde dir morgen berichten :o)

Danke dir schon einmal ganz dolle aber.

Gruß
Heiko
Mitglied: colinardo
colinardo 06.05.2015 aktualisiert um 16:42:52 Uhr
Goto Top
Noch zur Info: Wenn auf dem System nicht mindestens Powershell 3.0 installiert ist, musst du den Webrequest in Zeile 2 des obigen Schnippsels stattdessen so schreiben:
(New-Object System.Net.WebClient).DownloadString($url)
Grüße Uwe
Mitglied: pixel0815
pixel0815 07.05.2015 aktualisiert um 09:44:02 Uhr
Goto Top
Hallo Uwe,

das habe ich gemerkt.

Ausnahme beim Aufrufen von "DownloadString" mit 1 Argument(en):  "Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler."  
In \\fsrz003\Public\ix.mid\IxservStammdaten.ps1:5 Zeichen:1
+ (New-Object System.Net.WebClient).DownloadString($url)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : WebException

Dies erhalte ich als Meldung. Das VBScript funktioniert komischerweise.
edit: Habe es nochmals genau geprüft. Das Powershellskript funktioniert tatsächlich nicht.
Das VBScript trägt die Daten nachher ein.


Hmmmmmmmmmmmmmmmmmmmmm
Mitglied: colinardo
colinardo 07.05.2015 aktualisiert um 09:48:22 Uhr
Goto Top
Moin,
ich weiß ja nicht wie euer Server die Daten geliefert haben muss und ob Parameter überhaupt leer sein dürfen.
Am Einfachsten du schnappst dir die URL ersetzt die Variablen testweise durch den Computernamen und lässt die mit Clientname mal leer und pastest das in eine Adresszeile und schaust was passiert. Wenn es zu einem Fehler kommt lässt du mal die Parameter bei denen Clientname leer ist ganz weg und versuchst es erneut.
Mitglied: pixel0815
pixel0815 07.05.2015 um 09:51:28 Uhr
Goto Top
Habe jetzt schon mal sowas probiert

$IE = New-Object -com internetexplorer.application; 
$IE.visible = $true; 
$url = "http://10.246.0.112:8080/epa/WksPrnRegister?agnextid=1308432128&wshost=$($env:COMPUTERNAME)&wshclient=$($env:ClientName)&prn=Zebra%20TLP2824&prnhost=$($env:ClientName)&prntemplate=LP2824-USB"  
write-host $url

# Öffne
$IE.navigate($url);

Auch hier funktioniert es nicht. Das VB Script läuft jedoch.

Liegt es vielleicht an dem
 HTTPGet = IEApp.document.documentelement.outerhtml
?
Mitglied: pixel0815
pixel0815 07.05.2015 um 09:52:05 Uhr
Goto Top
Hallo Uwe,

die URL die Gebildet wird durch das VB oder Powershell Skript ist zu 100% Identisch.
Mitglied: colinardo
colinardo 07.05.2015 aktualisiert um 10:00:06 Uhr
Goto Top
Zitat von @pixel0815:
Liegt es vielleicht an dem
 HTTPGet = IEApp.document.documentelement.outerhtml

Nein, das gibt nur den HTML Code zurück ...
Ohne die Seite genauer analysieren zu können wird das hier schwierig ... Eventuell erwartet die Seite ein gesetztes Cookie was im IE gesetzt ist, aber das erfordert ohne die Seite zu kennen von mir hellseherische Fähigkeiten ...
Mitglied: colinardo
colinardo 07.05.2015 aktualisiert um 10:12:43 Uhr
Goto Top
Eventuell erfordert die Seite einen Useragent für einen IE (aber wie gesagt kann ich das hier leider nur vermuten face-sad):
$url = "http://10.246.0.112:8080/epa/WksPrnRegister?agnextid=1308432128&wshost=$($env:COMPUTERNAME)&wshclient=$($env:ClientName)&prn=Zebra%20TLP2824&prnhost=$($env:ClientName)&prntemplate=LP2824-USB"   
$webClient = new-Object System.Net.WebClient
$webClient.Headers.Add("UserAgent",'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko')  
$webClient.DownloadString($url)

Kannst du mit den DeveloperTools des IE auch mal analysieren (F12 im Browser) was da über die Leitung geht und ob die Seite umgeleitet wird etc. pp.
Mitglied: pixel0815
pixel0815 07.05.2015 um 10:39:10 Uhr
Goto Top
:o) Du ahnst nicht was es war.
Einmal den Apache durchtreten und geht... :o)
Mitglied: colinardo
colinardo 07.05.2015 aktualisiert um 10:43:05 Uhr
Goto Top
Zitat von @pixel0815:

:o) Du ahnst nicht was es war.
Einmal den Apache durchtreten und geht... :o)
"Ein Arxxxtritt am Morgen den kann ich dir besorgen face-big-smile"