【发布时间】:2010-12-26 20:56:02
【问题描述】:
我正在尝试计算远程服务器上文件夹的内容。
我知道:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
工作愉快。
但是我试图通过用户输入将服务器名称设为变量,但我无法获得接受任何变量的路径。
【问题讨论】:
标签: powershell variables filepath
我正在尝试计算远程服务器上文件夹的内容。
我知道:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
工作愉快。
但是我试图通过用户输入将服务器名称设为变量,但我无法获得接受任何变量的路径。
【问题讨论】:
标签: powershell variables filepath
这很简单:
$server = Read-Host "Enter server name"
Get-ChildItem \\$server\users -recurse | measure-object length -sum
【讨论】:
gci \\$servername\c$\users。顺便说一句,如果 servername 是一个变量,它必须是 \\$servername\c$。
如果您在 shell 中执行此操作并且想要单线,请尝试以下操作:
Get-ChildItem "\\$(Read-Host)\share" -recurse | Measure-Object length -sum
这不会产生要求输入的消息,但会保存分配给您可能不需要的变量,如果您从 shell 运行它,那么您知道无论如何都需要输入!
双引号也意味着对变量进行评估:
$hello = "Hello World"
Write-Host "$hello"
Hello world
或者正如 Keith Hill 指出的那样:
$hello = "Hello World"
Write-Host $hello
Hello World
单引号不会计算变量,所以:
$hello = "Hello World"
Write-Host '$hello'
$hello
因此,如果您使用变量并且路径中有空格,请使用“”。
【讨论】:
gci $pshome\modules - 看看 ma - 没有引号。 :-)