передать динамические значения Invoke-Command [duplicate]

В дополнение к другим правильным ответам вы можете рассмотреть возможность масштабирования ваших значений, чтобы избежать проблем с арифметикой с плавающей запятой.

Например:

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) .

0
задан Aerondight 31 March 2016 в 09:13
поделиться

2 ответа

Либо вы объявляете параметры в начале вашего скриптового блока:

   {  
        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

3
ответ дан Paul 28 August 2018 в 13:59
поделиться

В качестве альтернативы вы можете использовать область $Using:. Пример:

$servicesToSearchFor = "*"
Invoke-Command -ComputerName $computer -Credential (Get-Credential) -ScriptBlock { Get-Service $Using:servicesToSearchFor }

С помощью $Using: вам не нужен параметр -ArgumentList, а параметр $Using: f5] в скриптблоке.

5
ответ дан Moerwald 28 August 2018 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: