2014-07-14 56 views
0

我有以下腳本來列出服務器列表上的大文件。不幸的是它沒有列出任何東西。但是,如果我用字符串D:\替換$ _。Name,它可以正常工作。驅動器變量在Powershell中不工作

$servers = Get-Content "servers1.txt" | Select-String -pattern ` 
    "^[^#]" 
foreach ($line in $servers) { 
    $svr = echo $line | %{$_.Line.split(':')[2]} 
    Get-WmiObject Win32_Volume -ComputerName $svr -ErrorAction SilentlyContinue | 
    Select-Object __SERVER,Name | 
    foreach { 
     Invoke-command {Get-ChildItem -path $_.Name -rec | Where-Object ` 
     -FilterScript {($_.Length -ge 3GB) -and ($_.Name -notlike "*.mdf")}} -computername $svr 
    } 
} 

感謝您的任何幫助。

回答

1

這是範圍問題:在遠程命令$ _中。名稱不存在。試試這個:

Invoke-command { 
    param ($Path) 
    Get-ChildItem -path $Path -rec | Where-Object {($_.Length -ge 3GB) -and ($_.Name -notlike "*.mdf")} 
} -ComputerName $svr -ArgumentList $_.Name 
+0

現在工作正常。非常感謝! – user3835604