diff --git a/Scripts/enter-chat.ps1 b/Scripts/enter-chat.ps1 new file mode 100644 index 00000000..fb230356 --- /dev/null +++ b/Scripts/enter-chat.ps1 @@ -0,0 +1,79 @@ +# make sure you adjust this path +# it must point to a network share where you have read and write permissions +$ServerShare = "\\myserver\chathome" + +function Enter-Chat +{ + param + ( + [Parameter(Mandatory)] + [string] + $ChatChannelName, + + [string] + $Name = $env:USERNAME, + + [Switch] + $ShowOldPosts, + + $HomeShare = $ServerShare + + ) + + if ($ShowOldPosts) + { + $Option = '' + } + else + { + $Option = '-Tail 0' + } + + $Path = Join-Path -Path $HomeShare -ChildPath "$ChatChannelName.txt" + $exists = Test-Path -Path $Path + if ($exists -eq $false) + { + $null = New-Item -Path $Path -Force -ItemType File + } + + $process = Start-Process -FilePath powershell -ArgumentList "-noprofile -windowstyle hidden -command Get-COntent -Path '$Path' $Option -Wait | Out-GridView -Title 'Chat: [$ChatChannelName]'" -PassThru + + Write-Host "To exit, enter: quit" + "[$Name entered the chat]" | Add-Content -Path $Path + do + { + Write-Host "[$ChatChannelName]: " -ForegroundColor Green -NoNewline + $inputText = Read-Host + + $isStopCommand = 'quit','exit','stop','leave' -contains $inputText + if ($isStopCommand -eq $false) + { + "[$Name] $inputText" | Add-Content -Path $Path + } + + + } until ($isStopCommand -eq $true) + "[$Name left the chat]" | Add-Content -Path $Path + + $process | Stop-Process +} + + + +function Get-ChatChannel +{ + param + ( + $HomeShare = $ServerShare + + ) + + Get-ChildItem -Path $HomeShare -Filter *.txt -File | + ForEach-Object { + [PSCustomObject]@{ + ChannelName = [System.IO.Path]::GetFileNameWithoutExtension($_.Name) + LastActive = $_.LastWriteTime + Started = $_.CreationTime + } + } +}