首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >远程命令中使用局部变量时出现的问题

远程命令中使用局部变量时出现的问题
EN

Stack Overflow用户
提问于 2015-03-03 16:51:02
回答 1查看 389关注 0票数 3

我需要编写一个脚本,它接收变量并在远程系统上共享。

这样做是可行的:

代码语言:javascript
运行
复制
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create("C:\test","test",0)}

但这并不是:

代码语言:javascript
运行
复制
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create($sharepath,$sharename,0)}

我需要一种以某种方式传递这些价值观的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 17:03:41

远程会话无法读取局部变量,因此需要使用命令发送它们。这里有几个选择。在PowerShell 2.0中,您可以:

1.将它们与-ArgumentList一起传递并使用$arg[i]

代码语言:javascript
运行
复制
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create($args[0],$args[1],0)} -ArgumentList $sharepath, $sharename

2.将它们与-ArgumentList一起传递,并在脚本块中使用param()来定义参数

代码语言:javascript
运行
复制
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock { param($sharepath, $sharename) $a = [WMICLASS]"Win32_Share"; $a.Create($sharepath,$sharename,0)} -ArgumentList $sharepath, $sharename

在PowerShell 3.0中,引入了using-variable作用域,以使其更容易:

代码语言:javascript
运行
复制
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock { $a = [WMICLASS]"Win32_Share"; $a.Create($using:sharepath,$using:sharename,0)}

你可以在变量@ TechNet上读到更多这方面的内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28837383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档