尝试通过 Powershell 中的 Invoke-Command 重命名目录时抛出 null 错误

问题描述 投票:0回答:1

我基本上正在编写一个程序,该程序从用户那里获取当前文件夹路径的输入以及他们想要将其重命名为的新文件夹路径。然后,程序远程访问该文件夹所在的文件服务器,以运行命令并从那里重命名它。但是,当我尝试对其进行编码时,我收到此消息“无法将参数绑定到参数“路径”,因为它为空。

路径的示例是 U:\Projects\Temp\Test (这是我在远程服务器上使用的路径)

Write-Output "Connecting to computer: $computer_name" 


$sb = {
    Get-SmbOpenFile | Where-Object -Property path -Like $full_old_path | Close-SmbOpenFile -Force
    Rename-Item -Path $full_old_path -NewName $new_full_path
}

#Now time to establish remote connection to server and run our script

Invoke-Command -ComputerName $computer_name -Credential domain\$user_id -ScriptBlock $sb

一切都按预期工作,直到使用 Invoke-Command 运行 $sb Scriptblock 中的 Rename-Item 链接。这是特定于重命名文件夹的,可能不会用于单个文件。非常感谢任何帮助

Full Error Screenshot

powershell path rename invoke-command
1个回答
0
投票

如果您想在远程脚本块中使用局部变量,您需要使用远程变量

using
范围

尝试一下:

$sb = {
    Get-SmbOpenFile | Where-Object -Property path -Like $using:full_old_path | Close-SmbOpenFile -Force
    Rename-Item -Path $using:full_old_path -NewName $using:new_full_path
}

假设您在本地为

$full_old_path
$new_full_path
赋值。

如果不这样做,那么变量将为空,因为它们从未被分配过。

© www.soinside.com 2019 - 2024. All rights reserved.