Сценарій Powershell не записується так, як очікувалося при запуску з командного рядка


2

У мене є простий скрипт повноважень, який відкриває ур і реєструє, чи вдалося це:

$LogFile = ".\userLoad.log"
$Date = Get-Date
Try
{
    $Request = [System.Net.WebRequest]::Create("http://dxscrumassist.zhi.com/maintenance/loadusers.aspx")
    $Response = $Request.GetResponse()
    $LogString = "$Date - User Load Success"
    $Response.Close()
}
Catch
{
    $LogString = "$Date - User Load Failure"
}
Add-content $LogFile -value $LogString

Коли я запускаю програму з PowerShell ISE, вона працює нормально і записується як слід:

powershell.exe -executionpolicy bypass -file C:\AAA\loadUsers.ps1

Коли я запускаю такий самий файл із командного рядка Windows, я не отримую запис файлу журналу. Що я роблю неправильно?


З якої папки ви намагаєтеся запустити її?
Ƭᴇcʜιᴇ007

Відповіді:


2

Ось у чому річ, ви повідомляєте повноваження написати в ". \ Log.log", і це так. Просто я не думаю, що він пише там, де ти очікуєш. Це повідомлення про те, де get-locationє, що насправді є типовим типово тим самим каталогом користувачів (або тим, що обліковий запис виконує його). Перевірте .\users\<username>\log.logі подивіться, чи є там. Тепер, що ви хочете, це спосіб отримати поточний каталог виконання скриптів і написати там свій вихід. Ви можете зробити це так:

function Get-ScriptDirectory
{
  $Invocation = (Get-Variable MyInvocation -Scope 1).Value
  Split-Path $Invocation.MyCommand.Path
}
$ScriptDir = Get-ScriptDirectory

У вашому випадку $LogFileнасправді було б:

$LogFile = "$ScriptDir\log.log"

Перевірте Invoke-WebRequest:) Можливо, вам буде простіше веб-запитів. Ви також можете розглянути можливість додавання finallyдо свого, try\catchщоб він був try\catch\finally. finallyБлок завжди працює , і ви можете використовувати його для входу виконання скрипта (в даному випадку).


3

Я підозрюю, що це питання робочого каталогу. Загляньте в C: \ Windows \ System32 і перевірте, чи є ваш журнал. Або вкажіть і явний шлях до потрібного журналу, а не використовуйте відносний шлях.


Я погоджуюсь з вами щодо робочого каталогу, але я думаю, що це, мабуть, дефолт до каталогу користувачів або root. +1
Colyn1337
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.