Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell Select-String gibt kein False wieder

Frage Entwicklung Batch & Shell

Mitglied: mguenth83

mguenth83 (Level 1) - Jetzt verbinden

02.05.2013 um 16:47 Uhr, 2058 Aufrufe, 2 Kommentare

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
Mitglied: filippg
02.05.2013 um 17:00 Uhr
Hallo,

[...] 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
Bitte warten ..
Mitglied: mguenth83
13.05.2013, aktualisiert 16.01.2014
Hi,
sorry das die Antwort solange dauert. Habe es eben nochmal getestet und die Listen sind alle sauber bis zum Punkt wo er die Users rausfinden soll.
Sprich bei der Zeile..
Get-WmiObject -Class Win32_ComputerSystem -Property UserName | Select-Object -Property Username | Select-String "LRA" -Quiet | Out-File -FilePath $ActiveUsers

Bei dem Befehl schreibt er mir dann nur in die Textdatei die angemeldeten user, sprich wenn es kein Wert gibt dann schreibt er nicht False oder sonstiges rein sondern einfach nicht. Dies ist alledings blöd wenn ich später die Liste ActiveComputers mit den ActiveUsers kombinieren will. Wenn dort nicht false steht verrücken die ganzen Zeilen und es gibt Chaos...

In das Script habe ich jetzt noch die "If" Abfrage rein gemacht, weiss aber nicht obs richtig ist, weil funktionieren tut es immer noch nicht.

$ComputerList = "C:\Users\x\Desktop\LogonScript\MachineList.txt"
$ActiveComputers = "C:\Users\x\Desktop\LogonScript\ActiveComputers.txt"
$ActiveUsers = "C:\Users\x\Desktop\LogonScript\ActiveUsers.txt"
$str

Get-Content $ComputerList | Where-Object {(Test-Connection -Count 1 -ComputerName $_ -ErrorAction SilentlyContinue)} | Out-File -FilePath $ActiveComputers
if($str){ write-host "true" } else { write-host "false" }
foreach($content in $ActiveComputers)
{
Get-WmiObject -Class Win32_ComputerSystem -Property UserName | Select-Object -Property Username | Select-String "LRA" -Quiet | Out-File -FilePath $ActiveUsers
}
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell String zerlegen in Array, DataTable, Hashtable speichern (7)

Frage von derhoeppi zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell String Suchen mit Wildcard und Ersetzen (6)

Frage von herrmanndominic zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...