функция в запланированной задаче powershell не работает - PullRequest
0 голосов
/ 24 октября 2019

Я могу нормально запустить эту функцию в интерактивном режиме. Когда я помещаю это в запланированную задачу, это терпит неудачу. Обычно он возвращает «ОК», и я бегу с логикой оттуда. $ RequestMessage содержит 2 переменные для имени пользователя и пароля, которые объявлены в верхней части скрипта.

Function Invoke-PingSG
{
    PARAM
    (
        [parameter(Mandatory=$true)]
        [string]$Uri,
        [parameter(Mandatory=$true)]
        [string]$SOAPAction,
        [parameter(Mandatory=$true)]
        [xml]$RequestMessage
    )

    $Request = [System.Net.WebRequest]::Create($Uri)
    $Request.Headers.Add("SOAPAction","`"REDACTED$SOAPAction`"")
    $Request.ContentType = 'text/xml;charset="utf-8"'
    $Request.Method = "POST"
    $Request.KeepAlive = $true
    $RequestStream = $Request.GetRequestStream()
    $RequestMessage.Save($RequestStream)
    $RequestStream.Close()

    try
    {
        $Response = $Request.GetResponse()
        $ResponseStream = $Response.GetResponseStream()
        $Reader = [System.IO.StreamReader]($ResponseStream)
        $XmlReturned = [xml]$Reader.ReadToEnd()
        $ResponseStream.Close()
    }
    catch [System.Net.WebException]
    {
        $Response = $_.Exception
    }
    RETURN @($Response,$XmlReturned)
}
$RequestMessage = [xml]"<SOAP-ENV:Envelope xmlns:SOAP-ENV=`"http://schemas.xmlsoap.org/soap/envelope/`"
 xmlns:xsd=`"http://www.w3.org/2001/XMLSchema`" xmlns:xsi=`"http://www.w3.org/2001XMLSchema-instance`">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse=`"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd`" 
xmlns:wsu=`"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd`"><wsse:UsernameToken>
<wsse:Username>$AU</wsse:Username>
<wsse:Password Type=`"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText`">
$AUP</wsse:Password></wsse:UsernameToken></wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body>REDACTEDSTUFF</SOAP-ENV:Body></SOAP-ENV:Envelope>"

$SendTest = Invoke-PingSG -Uri http://some.url -SOAPAction "Ping" -RequestMessage $RequestMessage -ErrorAction SilentlyContinue

$ ($ SendTest [0] .StatusCode приведет к OK.

Когда я добавляю некоторые записи, я получаю

TerminatingError (Invoke-WebRequest): ..... ID3242: маркер безопасности не может быть аутентифицирован или авторизован ......

Есть идеи? Я также попробовал

$SendTest = Invoke-WebRequest http://some.url -Method post -ContentType 'text/xml' -Body $RequestMessage -Headers $headers -ErrorAction SilentlyContinue

, который работает в интерактивном режиме, но не в запланированной задаче.

Действие задачи:

C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

и аргументы:

-PecicyPolicy Bypass -Файл C: \ Scripts \ myscript.ps1

...