Войти

Показать полную графическую версию : [решено] Не работает функция из скрипта


etherlord
13-09-2013, 12:49
Доброго времени суток всем.
Пытаюсь сделать скрипт, к-рый будет ссылаться на другой скрипт, и при проверки столкнулся с проблемой, что комп не запоминает функцию.
Есть функция, лежащая в одноименном файле:

Function PingAw($CompName) {
$ping = New-Object System.Net.NetworkInformation.Ping
try
{
$Reply = $ping.Send($CompName)
}
catch
{
Write-host "Для машины " $CompName "не удалось выполнить ping"
}
return $Reply.status
}

из консоли запуская этот файл, и потом пробую запустить ф-цию

PS D:\Scripts> .\PingAw.ps1
PS D:\Scripts> Try { PingAw("127.0.0.1") } catch { echo "You must run PingAw script first" }
You must run PingAw script first

Suggestion [3,General]: The command PingAw was not found, but does exist in the current location. Windows PowerShell doe
sn't load commands from the current location by default. If you trust this command, instead type ".\PingAw". See "get-he
lp about_Command_Precedence" for more details.
PS D:\Scripts>

Foreigner
13-09-2013, 14:22
etherlord,

Назови скрипт или функцию иначе, что бы избежать конфликта имен.
Если надо, что бы функция была всегда доступна, то пропиши ее в стартовый скрипт ( profile.ps1 )

Тогда все работает:

> gc file.ps1
function y { 'yes' }
> . .\file.ps1
> y
yes
>

etherlord
13-09-2013, 14:26
Спасибо, помогло.

стартовый скрипт »
а это куда?

sunnykey
13-09-2013, 14:32
Пытаюсь сделать скрипт, к-рый будет ссылаться на другой скрипт, и при проверки столкнулся с проблемой, что комп не запоминает функцию. »
Ты вызываешь скрипт на выполнение, а не добавляешь функцию в текущую среду выполнения. Нужно сделать так
Import-Module .\PingAw.ps1

Foreigner
13-09-2013, 14:35
а это куда? »
В свой профиль, если нет, создай. Посмотри в сети, в него можно много полезного добавить.

C:\Users\<user>\Documents\WindowsPowerShell\profile.ps1




© OSzone.net 2001-2012