リモート サーバー上のフォルダーの内容をカウントしようとしています。
そんなこと知ってる:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
御馳走を働きます。
ただし、ユーザー入力によってサーバー名を変数にしようとしていますが、変数を受け入れるパスを取得できません。
リモート サーバー上のフォルダーの内容をカウントしようとしています。
そんなこと知ってる:
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
シェルでこれを行っていて、ワンライナーが必要な場合は、これを試してください:
Get-ChildItem "\\$(Read-Host)\share" -recurse | Measure-Object length -sum
これにより、入力を求めるメッセージは生成されませんが、必要のない変数への代入を節約できます。これをシェルから実行している場合は、とにかく必要な入力がわかります!
また、二重引用符は、変数が評価されることを意味します。
$hello = "Hello World"
Write-Host "$hello"
Hello world
または、キース・ヒルが指摘しているように:
$hello = "Hello World"
Write-Host $hello
Hello World
一重引用符は変数を評価しないため、次のようになります。
$hello = "Hello World"
Write-Host '$hello'
$hello
したがって、変数を使用していて、パスにスペースがある場合は、" " を使用してください。