如何在不使用 SMB 共享的情况下使用 Powershell 远程列出文件(仅限 winRM 端口)?



我想运行一个Powershell命令,该命令以递归方式打印给定目录中的所有文件。

我要求我的公司没有 SMB 共享,只需要使用 WinRM 端口。因此,\hostfolder是行不通的。

由于上述要求,直接使用Powershell的Get-ChildItem对我不起作用。

使用以下函数列出给定计算机和目录的文件。此函数通过使用使用 WinRM 端口的调用命令绕过 SMB 端口。使用下面的"ls -r"会导致文件以压缩格式打印,这很好(imo(。在执行 Invoke-Command 之前声明 ScriptBlock 允许您传入变量,而无需在 Invoke-Command 脚本块中输入 param(...(,并且它还通过分隔命令和执行行来清理代码。

function viewRemoteFiles($server) {
Write-Host "viewRemoteFiles($server) - entry"
$scriptStr = "ls -r $remoteBaseDir | ForEach-Object { `$_.FullName }"
$scriptBlock = [scriptblock]::Create($scriptStr)
Invoke-Command -ComputerName $server -Credential $MySecureCreds -ScriptBlock $scriptBlock
Write-Host "viewRemoteFiles($server) - exit"
}

试试这个:

Invoke-Command -ComputerName 192.168.1.5 -ScriptBlock { Get-ChildItem C: -Recurse } -Credential Get-Credential

最新更新