В дополнение к другим правильным ответам вы можете рассмотреть возможность масштабирования ваших значений, чтобы избежать проблем с арифметикой с плавающей запятой.
Например:
var result = 1.0 + 2.0; // result === 3.0 returns true
... вместо:
var result = 0.1 + 0.2; // result === 0.3 returns false
Выражение 0.1 + 0.2 === 0.3
возвращает false
в JavaScript, но, к счастью, целочисленная арифметика в плавающей запятой является точной, поэтому ошибки с десятичным представлением можно избежать путем масштабирования.
В качестве практического примера, чтобы избежать проблем с плавающей запятой, где точность имеет первостепенное значение, рекомендуется обрабатывать деньги как целое число, представляющее число центов: 2550
центов вместо 25.50
долларов.
1 Дуглас Крокфорд: JavaScript: Хорошие детали: Приложение A - Ужасные части (стр. 105) .
Либо вы объявляете параметры в начале вашего скриптового блока:
{
param($user,$unsecurepassword)
net use P: \\Server\dir1\dir2 /persistent:no /user:$User $UnsecurePassword
Get-EventLog -LogName System -After (Get-Date).AddHours(-12) -EntryType Error, Warning | format-list |
out-file P:\EventLog_$env:COMPUTERNAME.log
net use P: /delete /yes
}
Или вы присоединяетесь к своим аргументам с помощью переменной $args
:
#first passed parameter
$args[0]
#second passed parameter
$args[1]
....
Документация: MSDN
В качестве альтернативы вы можете использовать область $Using:
. Пример:
$servicesToSearchFor = "*"
Invoke-Command -ComputerName $computer -Credential (Get-Credential) -ScriptBlock { Get-Service $Using:servicesToSearchFor }
С помощью $Using:
вам не нужен параметр -ArgumentList
, а параметр $Using:
f5] в скриптблоке.