Powershell - команда работает в интерфейсе, но не в скрипте - PullRequest
0 голосов
/ 22 января 2019

Довольно плохо знаком со сценариями. У меня есть очень простой сценарий, который прекрасно работает в ISE, но когда я запускаю его в файле, это не так. Сценарий:

#
# WPM Convert to Ascii.ps1
# Process to remove accented characters from a text file as they cause issues when importing to U4BW via GL07
# SP Jan 2019
#
# Parameters
#
$usefile    =$dir+"\"+'SPTEMP.txt'
$outfile    =$dir+"\"+'SPOUT.txt'

#
# Convert characters
#
Get-Content $usefile -replace 'a', 'A' |Set-Content $outfile 

Простое преобразование символов в одном файле с выводом в другой. Вызывается из команды U4BW (Agresso): -

powershell.exe -ExecutionPolicy Unrestricted -File "c:\scripts\WPM Convert to Ascii.ps1" -infile "[File name]" -dir "[Directory]"

Я отладил все отправленные параметры (infile и dir), и они в порядке. Попытался закрыть файл (outfile) заранее.

Я знаю, что это, вероятно, основная проблема, но я просто не вижу ее. Любая помощь с благодарностью получена! Стив

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я согласен с тем, что было сказано выше, «замена» не является параметром для get-content.

# WPM Convert to Ascii.ps1
# Process to remove accented characters from a text file as they cause issues when importing to U4BW via GL07
# SP Jan 2019
#

Param
(
    [Parameter(Mandatory=$true)]
    [string]$usefile,

    [Parameter(Mandatory=$true)]
    [string]$outfile,

    [Parameter(Mandatory=$false)]
    $dir = $(Get-Location)
)


#
# Convert characters
#
(Get-Content $usefile) -replace 'a', 'A' |Set-Content $dir/$outfile 
0 голосов
/ 22 января 2019

Вам необходимо внести следующие изменения в ваш скрипт:

Объявите это в верхней части вашего скрипта, чтобы параметр -dir в вашем вызове фактически распознавался в скрипте:

param($dir)

Кроме того, ваша команда замены выглядит неправильно, -Replace не является допустимым параметром Get-Content.Вы, вероятно, имели в виду это?

(Get-Content $usefile) -replace 'a', 'A' | Set-Content $outfile

Окончательный сценарий (с некоторыми другими незначительными улучшениями):

# WPM Convert to Ascii.ps1
# Process to remove accented characters from a text file as they cause issues when importing to U4BW via GL07
# SP Jan 2019

# Passed parameters
param (
    # The base directory path
    $dir
)

# Derived parameters
$usefile = Join-Path $dir "SPTEMP.txt"
$outfile = Join-Path $dir "SPOUT.txt"

# Replace characters
(Get-Content $usefile) -replace 'a', 'A' | Set-Content $outfile 

Затем назовите его так:

powershell.exe -ExecutionPolicy Unrestricted -File "c:\scripts\WPM Convert to Ascii.ps1" -dir "[Directory]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...