我正在尝试计算远程服务器上文件夹的内容。如何在PowerShell的UNC路径中使用变量?
我知道:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
工作的享受。
但是我试图通过用户输入使服务器名称变成一个变量,但我无法获得接受任何变量的路径。
我正在尝试计算远程服务器上文件夹的内容。如何在PowerShell的UNC路径中使用变量?
我知道:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
工作的享受。
但是我试图通过用户输入使服务器名称变成一个变量,但我无法获得接受任何变量的路径。
这是非常简单的:
$server = Read-Host "Enter server name"
Get-ChildItem \\$server\users -recurse | measure-object length -sum
如果您在shell这样做的,你想一个班轮,试试这个:
Get-ChildItem "\\$(Read-Host)\share" -recurse | Measure-Object length -sum
这不会产生一个消息,要求输入,但保存分配给一个你可能不需要的变量,如果你从shell运行这个变量,那么你就知道需要输入!
而且双引号将意味着一个变量进行评估,以便:
$hello = "Hello World"
Write-Host "$hello"
Hello world
或者像基思·希尔曾指出:
$hello = "Hello World"
Write-Host $hello
Hello World
凡为单引号将不计算变量如此:
$hello = "Hello World"
Write-Host '$hello'
$hello
所以,如果你使用变量,你在路径中有空格,使用“”。
在您的写主机示例中根本不需要引号。即使在命令模式解析的情况下,您也不需要围绕变量使用双引号。在V2上试试这个 - 'gci $ pshome \ modules' - 看看ma - 没有引号。 :-) – 2009-12-19 16:50:46
@Keith感谢您的评论,这是真的,但我把它们放在双重和单引号之间的行为上的差异的原因。我已经修改了这个例子来演示这个。感谢您指出了这一点。 :-) – Jonny 2009-12-22 12:49:12
我想知道如果这是一个PowerShell版本问题,因为我不能得到这个工作。 我收到: “Can not find path'\\ servername \ C $ \ foldername',因为它不存在。”错误 – 2009-12-15 16:07:44
嗯,我已经下载了2.0版本,但仍然无法正常工作。 它看起来像是应该的。我必须在这里错过一些明显的东西。 – 2009-12-15 16:36:00
不知道。它适用于V2'gci \\ $ servername \ c $ \ users'。顺便说一句,如果servername是一个变量,它必须是'\\ $ servername \ c $'。 – 2009-12-15 16:50:08