Powershell Select-String gibt kein False wieder
Hi,
ich habe ein Powershellscript und weiss derzeit nicht weiter warum genau er mir bei einer variablen kein False ausspuckt.
Das Script soll den Benutzer in einer Computerlist.txt überprüfen ob jemand angemeldet ist. Wenn dies der fall ist und dort etwas ausgegeben wird soll er True schreiben doch ist das Property leer soll er false schreiben,
Hier mal das Script...
$ComputerList = "C:\Users\test\Desktop\LogonScript\MachineList.txt"
$ActiveComputers = "C:\Users\test\Desktop\LogonScript\Active.txt"
$ActiveUsers = "C:\test\Desktop\LogonScript\ActiveUsers.txt"
Get-Content $ComputerList | Where-Object {(Test-Connection -Count 1 -ComputerName $_ -ErrorAction SilentlyContinue)} | Out-File -FilePath $ActiveComputers
foreach(
$content in $ActiveComputers)
{
Get-WmiObject -Class Win32_ComputerSystem -Property UserName | Select-Object -Property Username | Select-String "LRA" -Quiet | Out-File -FilePath $ActiveUsers
}
Erst soll er eine vorgegebene Datei durchsuchen und pingen. Alle die ereeichbar sind sollen in eine TXT geschrieben werden. Von dieser TXT soll dann das andere Script schauen wer alles angemeldet ist und wieder in eine TXT schreiben (True or False)
Dann kombiniere ich die beiden TXT und alle die true haben lass ich nochmals in ne txt schreiben.Diese PCs werden dann heruntergefahren um strom zu sparen.
Ich weiss es ist verdammt umständlich aber besser kann ichs nicht, hoffe Ihr helft mir trozdem
Gruß
Matze
ich habe ein Powershellscript und weiss derzeit nicht weiter warum genau er mir bei einer variablen kein False ausspuckt.
Das Script soll den Benutzer in einer Computerlist.txt überprüfen ob jemand angemeldet ist. Wenn dies der fall ist und dort etwas ausgegeben wird soll er True schreiben doch ist das Property leer soll er false schreiben,
Hier mal das Script...
$ComputerList = "C:\Users\test\Desktop\LogonScript\MachineList.txt"
$ActiveComputers = "C:\Users\test\Desktop\LogonScript\Active.txt"
$ActiveUsers = "C:\test\Desktop\LogonScript\ActiveUsers.txt"
Get-Content $ComputerList | Where-Object {(Test-Connection -Count 1 -ComputerName $_ -ErrorAction SilentlyContinue)} | Out-File -FilePath $ActiveComputers
foreach(
$content in $ActiveComputers)
{
Get-WmiObject -Class Win32_ComputerSystem -Property UserName | Select-Object -Property Username | Select-String "LRA" -Quiet | Out-File -FilePath $ActiveUsers
}
Erst soll er eine vorgegebene Datei durchsuchen und pingen. Alle die ereeichbar sind sollen in eine TXT geschrieben werden. Von dieser TXT soll dann das andere Script schauen wer alles angemeldet ist und wieder in eine TXT schreiben (True or False)
Dann kombiniere ich die beiden TXT und alle die true haben lass ich nochmals in ne txt schreiben.Diese PCs werden dann heruntergefahren um strom zu sparen.
Ich weiss es ist verdammt umständlich aber besser kann ichs nicht, hoffe Ihr helft mir trozdem
Gruß
Matze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205955
Url: https://administrator.de/contentid/205955
Ausgedruckt am: 17.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
Du solltest die Problemstellung weiter zerlegen. Du gibst ja Zwischenergebnisse in Textdateien aus. Ist denn der Inhalt der ersten Datei noch so, wie erwartet? Wird er dann im nächsten Schritt korrekt eingelesen? Das könntest du z.B. mit einem Write-Host Prufe $content anzeigen lassen. Womit wir auch beim nächsten Problem wären: du iterierst zwar über $ActiveComputers (foreach...), aber ich sehe nicht, dass die Laufvariable $content dann irgendwo mal verwendet würde.
Gruß
Filipp
[...] warum genau er mir bei einer variablen kein False ausspuckt.
Bei welcher denn? Wäre schon nett, wenn du das sagen würdest.Du solltest die Problemstellung weiter zerlegen. Du gibst ja Zwischenergebnisse in Textdateien aus. Ist denn der Inhalt der ersten Datei noch so, wie erwartet? Wird er dann im nächsten Schritt korrekt eingelesen? Das könntest du z.B. mit einem Write-Host Prufe $content anzeigen lassen. Womit wir auch beim nächsten Problem wären: du iterierst zwar über $ActiveComputers (foreach...), aber ich sehe nicht, dass die Laufvariable $content dann irgendwo mal verwendet würde.
Wenn dies der fall ist und dort etwas ausgegeben wird soll er True schreiben doch ist das Property leer soll er false schreiben,
Jaaa... dann solltest du ihm das auch sagen. In der PowerShell ergibt $string den Wert $false, wenn der STring leer ist oder gar nicht initialiert wurde. Also if($str){ write-host "true" } else { write-host "false" }Gruß
Filipp