Как использовать PowerShell для установки времени на удаленном устройстве?

Я хочу установить для даты и времени удаленного устройства (Raspberry Pi 2 под управлением Windows IoT) значение даты и времени локального устройства.

Я создаю переменную $dateTime для хранения локального DateTime. Я назначаю пароль для подключения к удаленному устройству переменной $password. Я создаю объект учетных данных. Я подключаюсь к удаленному устройству с помощью Enter-PSSession. Теперь, когда я подключен, я пытаюсь назначить удаленным устройствам DateTime, используя Set-Date = $dateTime | Исходящая строка.

Я получаю сообщение об ошибке cannot convertvalue "=" to type "System.TimeSpan".

$dateTime = Get-Date
$password = ConvertTo-SecureString "mypassword" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("myremotedevice     \Administrator",$password)
Enter-PSSession -ComputerName myremotedevice -Credential $cred
Set-Date = $dateTime | Out-String

Кажется, что переменная $dateTime выходит за рамки, когда я подключаюсь через PSSession. Есть ли способ обойти это ?


person Bill Greer    schedule 28.09.2015    source источник


Ответы (1)


Я бы вообще не использовал для этого Enter-PSSession, поскольку он предназначен для интерактивных сеансов.

Я бы использовал это:

$dateTime = Get-Date;
$password = ConvertTo-SecureString "mypassword" -AsPlainText -Force;
$cred = New-Object System.Management.Automation.PSCredential ("myremotedevice     \Administrator",$password);
Invoke-Command -ComputerName myremotedevice -Credential $cred -ScriptBlock {
    Set-Date -Date $using:datetime;
}

Или, если бы у меня было несколько вещей для выполнения:

$dateTime = Get-Date;
$password = ConvertTo-SecureString "mypassword" -AsPlainText -Force;
$cred = New-Object System.Management.Automation.PSCredential ("myremotedevice     \Administrator",$password);
$session = New-PsSession -ComputerName -Credential $cred;
Invoke-Command -Session $session -ScriptBlock {
    Set-Date -Date $using:datetime;
}
Invoke-Command -Session $session -ScriptBlock { [...] }
.
.
Disconnect-PsSession -Session $session;

Для передачи локальных переменных в удаленный сеанс обычно требуется пространство имен using.

person Bacon Bits    schedule 28.09.2015
comment
Я попробую и доложу. Спасибо Бэкон Битс, - person Bill Greer; 28.09.2015