2016-11-04 25 views
1

簡而言之,我要做的是運行一個命令,該命令將捕獲一組計算機的名稱,然後將結果輸出到文本文件中。請注意,我如何說「一組計算機」,爲此,我知道必須應用過濾器。我應用了一個過濾器,但輸出文件實際上輸出空白!在Get-ADComputer Powershell命令中應用「過濾器」

見下面我的代碼:

Get-ADComputer -Filter { Name -eq "GBSU1" } | select Name | out-file C:\Users\adm-arifsohm\Desktop\test-folder\computers.txt 

有人能告訴我什麼,我做錯了什麼?

更新:

我能做得出來到底。請參閱我的修改代碼:

Get-ADComputer -Filter {(Name -like 'GBSU-*') -or (Name -like 'GBSU1*')} | Select -Expand Name | out-file C:\Users\adm-arifsohm\Desktop\test-folder\computers.txt 

感謝所有幫助。

+0

下一次你提出一個問題時,請寫下你希望得到的輸出,這會使它更容易一點你的問題。 –

回答

0
Get-ADComputer -Filter { Name -eq "GBSU1" } 

這部分將完全匹配「GBSU1」,沒有別的。如果這是計算機名稱的前綴或一部分,你應該嘗試:

Get-ADComputer -Filter { Name -like "GBSU1*" } 

星號(*)是通配符,所以上面的行會喜歡像GBSU1somethingelse

對不起,我跑瞭如果需要,將回來解釋,但我認爲這是你的問題

0

1'st off,你需要使用一些其他的東西,然後-eq。 EQ將爲您提供一個 對象而不是一組對象。在這種情況下。

2'nd off,您需要告訴out-file它需要將內容添加到文件中,而不是重寫它。 在這裏,您使用屬性-append

-append 表示該cmdlet將輸出到現有文件的末尾,而不是替換文件的內容。

如果你願意,你也可以使用-NoClobber,不需要。

-NoClobber 指示該cmdlet不會覆蓋現有文件。默認情況下,如果指定路徑中存在文件,Out-File會覆蓋文件而不發出警告。如果使用Append和NoClobber,則輸出將附加到現有文件。

它看起來像out-file C:\Users\adm-arifsohm\Desktop\test-folder\computers.txt -Append

3'nd關閉,如果您鏈​​接到,不位於磁盤上的路徑,它無法找到路徑,它會給你這個錯誤Out-File : Could not find a part of the path 'C:\Users\adm-arifsohm\Desktop\test-folder\computers.txt'.

代碼將是什麼樣子如下:

Get-ADComputer -Filter { Name -like 'GBSU1*' } | select Name | Out-File -FilePath "C:\Users\adm-arifsohm\Desktop\test-folder\computers.txt" -Append 

這將採取任何電腦開始GBSU1並將其放入文件中。所有這些都可以在名稱'* GBSU1'前面移動,所有結束該GBSU1的計算機都將放入該文件。

最後,我會寫的代碼,因爲這:

$FilePath = 'C:\Users\adm-arifsohm\Desktop\test-folder' 
$Filename = 'computers.txt' 

if (-not (Test-Path $FilePath)) { 
    New-Item -ItemType Directory -Path $FilePath -Force 
} else {} 

Get-ADComputer -Filter { Name -like 'mth24*2' } -Properties name | Out-File -FilePath $($FilePath + "\" + $Filename) -Append -Force 
+0

謝謝你的建議,第一個建議很有效,儘管很多空間的存在讓人頗爲擔憂。第二個建議對我來說不起作用,它又輸出空白。 –

+0

你能寫出你嘗試過但沒有用的東西嗎?我會看看它嗎?你也可以告訴我你在找什麼,所以我可以考慮如何過濾需要? –

0

GET-ADComputer -filter {名狀 「GBSU *」 - 和啓用當量 「真」} | out-file C:\ Users \ adm-arifsohm \ Desktop \ test-folder \ computers.txt

+0

感謝您的建議,但不幸的是,這提取了多行信息,而我只需要計算機名稱。我現在已經整理過了,請在我的初始文章中查看修改後的代碼。 –

+0

不錯的觀察。默認情況下多餘的線條被拋棄會使眼睛變得相當困難。所以我實際上使用了您的修改來改進我正在處理的幾乎相同的腳本。 Get-ADComputer -filter {name-like「win10 *」-and Enabled -eq「true」} |選擇-expand Name | out-file C:\ Users \ Admin1 \ Desktop \ computers.txt –