如何使用PowerShell设置远程设备上的时间?

时间:2015-09-28 17:09:15

标签: powershell raspberry-pi iot windows-10-iot-core

我想将远程设备(运行Windows IoT 的Raspberry Pi 2)的日期和时间设置为本地设备的日期时间值。

我创建一个变量$ dateTime来保存本地DateTime。 我将密码分配给远程设备连接到变量$ password。 我创建了一个凭证对象。 我使用Enter-PSSession连接到远程设备。 现在我已连接,我尝试使用Set-Date = $ dateTime |分配远程设备DateTime出字符串。

无法将convertvalue“=”转换为“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

一旦我通过PSSession连接,似乎$ dateTime变量超出了范围。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分: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;

Passing local variables to a remote session通常需要using命名空间。