当前位置: 首页 > 知识库问答 >
问题:

如何在powershell中的“获取属性命令”中传递变量

靳茂
2023-03-14

我必须将特定文件从一个远程桌面获取到本地计算机或其他服务器。如何在获取内容中传递变量以从远程桌面连接获取文件?

我将文件路径存储为变量,并尝试将其传递给get content。

Invoke-Command -Computername $Server -ScriptBlock{get-content -path $file }
Invoke-Command -Computername $Server -ScriptBlock{get-content -path ${file} }

$file="C:\Users\Documents\new DB_connection\\log2.txt"

 $Server="servername"

 $answer=  Invoke-Command -Computername $Server -ScriptBlock{get-content -path $file } 
write-output $answer

无法将参数绑定到参数“路径”,因为它为空。类别信息:InvalidData: (:) [Get-Content],ParameterBindingValidationException FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotes,Microsoft.PowerShell.Commands.GetContentCommand

共有2个答案

宣意致
2023-03-14

尝试在ScriptBlock中定义变量

$Server="servername"
$answer=  Invoke-Command -Computername $Server -ScriptBlock{
$file="C:\Users\Documents\new DB_connection\\log2.txt";
get-content -path $file} 
write-output $answer
马弘益
2023-03-14

您可以通过PSS权限复制文件,而不是使用Invoke-Command。要从远程服务器复制到本地路径或不同的远程服务器:

 $session = New-PSSession -ComputerName server.domain.tld
 Copy-Item -Source $originatingServerFilePath -Destination $localOrUNCFilePath -FromSession $session

如果需要将本地文件复制到目标服务器:

Copy-Item -Source $localFilePath -Destination $destinationServerFilePath -ToSession $session

这样做的好处是不会出现双跳,尽管运行命令的服务器需要访问任何远程文件路径。如果您需要将文件从一台服务器复制到另一台服务器,但目标服务器没有将文件路径公开为共享文件夹(或者您没有访问权限),则不能同时指定-ToSession-FromSession,因此您必须在本地复制文件并使用两个会话,如下所示:

$sourceSession = New-PSSession -ComputerName source.domain.tld
$destinationSession = New-PSSession -ComputerName destination.domain.tld

# Copy the remote file(s) from the source session to a local path first
Copy-Item -Source $sourceSessionFilePath -Destination $localTempFilePath -FromSession $sourceSession

# Copy the new local files to the destination session from your local path
Copy-Item -Source $localTempFilePath -Destination $destinationSessionFilePath -ToSession $destinationSession
 类似资料:
  • 问题内容: 我想编写Docker容器管理的脚本,但是我发现很难将PS变量传递给Docker命令,特别是由于路径格式的差异。 以下行(*)和您可以在此处找到的赞都可以 使用,但是很不方便: 的确,PS 非常适合MSI安装程序,您需要查看弹出窗口并控制其可见性级别,以便了解无提示安装程序正在运行。取而代之的是,您不想每次运行控制台应用程序时都启动一个新窗口,尤其是在Docker中,在其中您与调用程序和

  • 我是ansible的新手,不知道如何做到这一点,因为以下内容不起作用 其中,是我的变量。

  • 问题内容: 我希望能够使用ssh从我的机器上运行命令并传递环境变量 这是我正在尝试的: 是在进行ssh调用的计算机上设置的,并且由于该变量在远程主机上不存在,因此不会被提取。 如何传递的值? 问题答案: 如果您使用 代替 您的外壳程序会在将命令字符串发送到远程主机之前进行插值。

  • 为了使Playbook更灵活、通用性更强,允许用户在执行的时候传入变量的值,这个时候就需要用到“额外变量”。 定义命令行变量 在release.yml文件里,hosts和user都定义为变量,需要从命令行传递变量值。 --- - hosts: '{{ hosts }}' remote_user: '{{ user }}' tasks: - ... 使用命令行变量 在命令行里面传值

  • 本文向大家介绍如何获取PowerShell中所有可用命令的列表?,包括了如何获取PowerShell中所有可用命令的列表?的使用技巧和注意事项,需要的朋友参考一下 要获取系统中安装的所有命令的列表,请使用以下命令行。它将包括所有别名,函数和Cmdlet。 要将它们导出到CSV文件, 要仅获取cmdlet命令, 同样,您可以获取别名和功能的命令。 如果要从获取开始的命令列表,则可以输入– Verb。

  • 我有一个pom文件,其中某些依赖项的版本号依赖于pom文件设置中指定的项目版本属性。我可以通过命令行覆盖它吗?如果可以,如何操作? 说来话长: 我们目前正在将我们的项目转换为maven,但我们还没有完全实现。有多个模块仍然没有使用maven构建,因此是我们项目中的依赖项(它们通过ant构建到jar中)。发布后,我们希望构建所有这些jar,并包含与父项目相同的版本号。对于发布,执行两个步骤(直到我们