2017-08-01 1 views
0

出力しているファイルには$マシンが含まれていません。有効であるかどうかには数値が含まれています。マシン名を出力するにはどうしたらいいですか?これはマシン名ではなくファイル内の数値を出力するのはなぜですか?

Import-Module ActiveDirectory 
$enddate = Get-Date 
$machines=(Get-ADComputer -filter * -SearchBase 'OU=this,OU=is,OU=my,DC=domain,DC=com' -Properties * | Select Name, lastlogondate |Where-Object {$_.LastLogonDate -lt ($enddate).AddMonths(-2)} |Sort lastlogondate).name 
foreach ($machine in $machines) 
{ 
    if (test-Connection -ComputerName $machine -count 1 -ErrorAction SilentlyContinue) 
     { 
      Write-Output "$machine is valid" 
     } 
      Write-Output "$machine is not valid" | Export-Csv 
    c:\machine_not_valid.csv -Append -NoClobber -NoTypeInformation 
} 

答えて

2

Export-Csvは文字列ではなくオブジェクトを必要とします。次に、このオブジェクトのプロパティをCSVのヘッダーとして使用します。それは単一のプロパティLength

を持っ入力としてstringを、受信しているので、それは数字を出力している

"$machine is not valid"一部がelse文で外if文のとない場合また、あなたのコード内のエラーを持っています。

複数の値がある場合は、Export-Csvがあります。オブジェクトを作成する必要がないので、Out-Fileを使用してください。

Import-Module ActiveDirectory 
$enddate = Get-Date 
$machines=(Get-ADComputer -filter * -SearchBase 'OU=this,OU=is,OU=my,DC=domain,DC=com' -Properties * | Select Name, lastlogondate |Where-Object {$_.LastLogonDate -lt ($enddate).AddMonths(-2)} |Sort lastlogondate).name 

foreach ($machine in $machines) 
{ 
    if (test-Connection -ComputerName $machine -count 1 -ErrorAction SilentlyContinue) 
     { 
      Write-Output "$machine is valid" 
     }else{ 
      Write-Output "$machine is not valid" | Export-Csv c:\machine_not_valid.csv -Append -NoClobber 
     } 
} 
+0

ありがとうございました。それがトリックでした。 – user770022

関連する問題