topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • October 20, 2019, 09:05 PM
  • Proudly celebrating 13 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - 4wd [ switch to compact view ]

Pages: [1] 2 3 4 5 6 ... 208next
1
Cheap and nasty PowerShell alternative :D

2019-10-14 17_58_15-Refile.png

Run it from the shortcut or a PowerShell console.

Entering a value for Separator overrides Use first x characters.

Disclaimer: Works here ;)

Code: PowerShell [Select]
  1. <# This form was created using POSHGUI.com  a free online gui designer for PowerShell
  2. .NAME
  3.     Refile.ps1
  4. #>
  5.  
  6. Function FileBrowser {
  7.   $objForm = New-Object System.Windows.Forms.FolderBrowserDialog
  8.   $objForm.Description = "Select folder containing files"
  9.   $objForm.SelectedPath = [System.Environment+SpecialFolder]'MyComputer'
  10.   $objForm.ShowNewFolderButton = $false
  11.   $result = $objForm.ShowDialog()
  12.   if ($result -eq "OK") {
  13.     return $objForm.SelectedPath
  14.   } else {
  15.     return ""
  16.   }
  17. }
  18.  
  19. #region begin GUI{
  20.  
  21. Add-Type -AssemblyName System.Windows.Forms
  22. [System.Windows.Forms.Application]::EnableVisualStyles()
  23.  
  24. $Form                            = New-Object system.Windows.Forms.Form
  25. $Form.ClientSize                 = '400,350'
  26. $Form.text                       = "Refile"
  27. $Form.TopMost                    = $false
  28.  
  29. $TextBox1                        = New-Object system.Windows.Forms.TextBox
  30. $TextBox1.multiline              = $false
  31. $TextBox1.width                  = 225
  32. $TextBox1.height                 = 21
  33. $TextBox1.location               = New-Object System.Drawing.Point(85,19)
  34. $TextBox1.Font                   = 'Microsoft Sans Serif,12'
  35.  
  36. $TextBox2                        = New-Object system.Windows.Forms.TextBox
  37. $TextBox2.multiline              = $false
  38. $TextBox2.width                  = 225
  39. $TextBox2.height                 = 21
  40. $TextBox2.location               = New-Object System.Drawing.Point(85,60)
  41. $TextBox2.Font                   = 'Microsoft Sans Serif,12'
  42.  
  43. $Button1                         = New-Object system.Windows.Forms.Button
  44. $Button1.text                    = "..."
  45. $Button1.width                   = 40
  46. $Button1.height                  = 30
  47. $Button1.location                = New-Object System.Drawing.Point(323,17)
  48. $Button1.Font                    = 'Microsoft Sans Serif,12'
  49.  
  50. $Button2                         = New-Object system.Windows.Forms.Button
  51. $Button2.text                    = "..."
  52. $Button2.width                   = 40
  53. $Button2.height                  = 30
  54. $Button2.location                = New-Object System.Drawing.Point(323,58)
  55. $Button2.Font                    = 'Microsoft Sans Serif,12'
  56.  
  57. $Label1                          = New-Object system.Windows.Forms.Label
  58. $Label1.text                     = "Source:"
  59. $Label1.AutoSize                 = $true
  60. $Label1.width                    = 25
  61. $Label1.height                   = 10
  62. $Label1.location                 = New-Object System.Drawing.Point(20,19)
  63. $Label1.Font                     = 'Microsoft Sans Serif,12'
  64.  
  65. $Label2                          = New-Object system.Windows.Forms.Label
  66. $Label2.text                     = "Dest:"
  67. $Label2.AutoSize                 = $true
  68. $Label2.width                    = 25
  69. $Label2.height                   = 10
  70. $Label2.location                 = New-Object System.Drawing.Point(20,59)
  71. $Label2.Font                     = 'Microsoft Sans Serif,12'
  72.  
  73. $ComboBox1                       = New-Object system.Windows.Forms.ComboBox
  74. $ComboBox1.width                 = 80
  75. $ComboBox1.height                = 20
  76. @('1','2','3','4','5') | ForEach-Object {[void] $ComboBox1.Items.Add($_)}
  77. $ComboBox1.location              = New-Object System.Drawing.Point(230,190)
  78. $ComboBox1.Font                  = 'Microsoft Sans Serif,12'
  79.  
  80. $Label3                          = New-Object system.Windows.Forms.Label
  81. $Label3.text                     = "Use first x characters:"
  82. $Label3.AutoSize                 = $true
  83. $Label3.width                    = 25
  84. $Label3.height                   = 10
  85. $Label3.location                 = New-Object System.Drawing.Point(60,193)
  86. $Label3.Font                     = 'Microsoft Sans Serif,12'
  87.  
  88. $Label4                          = New-Object system.Windows.Forms.Label
  89. $Label4.text                     = "or"
  90. $Label4.AutoSize                 = $true
  91. $Label4.width                    = 25
  92. $Label4.height                   = 10
  93. $Label4.location                 = New-Object System.Drawing.Point(188,160)
  94. $Label4.Font                     = 'Microsoft Sans Serif,12'
  95.  
  96. $TextBox3                        = New-Object system.Windows.Forms.TextBox
  97. $TextBox3.multiline              = $false
  98. $TextBox3.width                  = 80
  99. $TextBox3.height                 = 20
  100. $TextBox3.Text                   = ''
  101. $TextBox3.location               = New-Object System.Drawing.Point(230,130)
  102. $TextBox3.Font                   = 'Microsoft Sans Serif,12'
  103.  
  104. $TextBox4                        = New-Object system.Windows.Forms.TextBox
  105. $TextBox4.multiline              = $false
  106. $TextBox4.width                  = 80
  107. $TextBox4.height                 = 20
  108. $TextBox4.Text                   = 'txt'
  109. $TextBox4.location               = New-Object System.Drawing.Point(230,95)
  110. $TextBox4.Font                   = 'Microsoft Sans Serif,12'
  111.  
  112. $Label5                          = New-Object system.Windows.Forms.Label
  113. $Label5.text                     = "Separator (eg. -):"
  114. $Label5.AutoSize                 = $true
  115. $Label5.width                    = 25
  116. $Label5.height                   = 10
  117. $Label5.location                 = New-Object System.Drawing.Point(60,130)
  118. $Label5.Font                     = 'Microsoft Sans Serif,12'
  119.  
  120. $Label6                          = New-Object system.Windows.Forms.Label
  121. $Label6.text                     = "Extension (eg. pdf):"
  122. $Label6.AutoSize                 = $true
  123. $Label6.width                    = 25
  124. $Label6.height                   = 10
  125. $Label6.location                 = New-Object System.Drawing.Point(60,95)
  126. $Label6.Font                     = 'Microsoft Sans Serif,12'
  127.  
  128. $Button3                         = New-Object system.Windows.Forms.Button
  129. $Button3.text                    = "Go"
  130. $Button3.width                   = 60
  131. $Button3.height                  = 30
  132. $Button3.location                = New-Object System.Drawing.Point(165,240)
  133. $Button3.Font                    = 'Microsoft Sans Serif,12'
  134.  
  135. $Button4                         = New-Object system.Windows.Forms.Button
  136. $Button4.text                    = "Create 50 test files in Source"
  137. $Button4.width                   = 140
  138. $Button4.height                  = 50
  139. $Button4.location                = New-Object System.Drawing.Point(120,285)
  140. $Button4.Font                    = 'Microsoft Sans Serif,10'
  141. $Form.controls.AddRange(@($TextBox1,$TextBox2,$Button1,$Button2,$Label1,$Label2,$ComboBox1,$Label3,$Label4,$TextBox3,$Label5,$Button3,$Button4,$TextBox4,$Label6))
  142.  
  143. $Button1.Add_Click({
  144.   $TextBox1.Text = (FileBrowser)
  145. })
  146.  
  147. $Button2.Add_Click({
  148.   $TextBox2.Text = (FileBrowser)
  149. })
  150.  
  151. $Button3.Add_Click({
  152.   if (!(($TextBox1.Text -eq '') -and ($TextBox2.Text -eq ''))) {
  153.     $dest = $TextBox2.Text
  154.     $files = Get-ChildItem "$($TextBox1.Text)\*.$($TextBox4.Text)" -File
  155.  
  156.     for ($i = 0; $i -lt $files.Count; $i++) {
  157.       $folder = $null
  158.       if ($TextBox3.Text -eq '') {
  159.         $folder = (Split-Path -Leaf $files[$i]).Substring(0, $ComboBox1.SelectedItem).Trim()
  160.       } else {
  161.         $sep = (Split-Path -Leaf $files[$i]).IndexOf($TextBox3.Text)
  162.           switch ($sep) {
  163.             -1 {continue}
  164.             0  {$folder = (Split-Path -Leaf $files[$i]).Substring(0, 1).Trim()
  165.               break
  166.              }
  167.           default {$folder = (Split-Path -Leaf $files[$i]).Substring(0, $sep).Trim()}
  168.         }
  169.       }
  170.       if ($folder -ne $null) {
  171.         if (!(Test-Path "$($dest)\$($folder)")) {
  172.           New-Item -ItemType Directory "$($dest)\$($folder)"
  173.         }
  174.         Move-Item $files[$i] "$($dest)\$($folder)\$((Split-Path -Leaf $files[$i]))"
  175.       }
  176.     }
  177.   }
  178. })
  179.  
  180. $Button4.Add_Click({
  181.   if (!($TextBox1.Text -eq '')) {
  182. # Set the initial value to control the do loop
  183.     $seed = 0
  184. # How many files should be generated
  185.     $random = 50
  186. # File size in bytes
  187.     $ranSize = 4096
  188. # Path where the file will be created
  189.     $ranPath = "$($TextBox1.Text)\"
  190.     do {
  191.       $netFn = [System.IO.Path]::GetRandomFileName()
  192.       $netfn = [System.IO.Path]::ChangeExtension($netFn, $TextBox4.Text)
  193.       fsutil file createnew $ranPath$netFn $ranSize
  194.       $seed++
  195.     } until ($seed -eq $random)
  196.   }
  197. })
  198.  
  199. #endregion events }
  200.  
  201. #endregion GUI }
  202.  
  203. #Write your logic code here
  204.  
  205. [void]$Form.ShowDialog()

2
Living Room / Re: Android annoyances
« on: October 11, 2019, 02:16 AM »
1) I very often accidentally switch on the Google Assistant, how do I completely disable or uninstall it? I don't find any value in using it and it has some very basic shortcuts that interfere too often.

Given that there are numerous phones with possibly multiple ways of invoking Assistant perhaps it might not have occurred to you that you telling us how you accidentally keep invoking it might help us to have relevant suggestions on how not to do it.

Like not holding your finger on the fingerprint sensor too long ...

hmmmm ...

3
Living Room / Re: Free call recorder for Android
« on: September 17, 2019, 03:11 PM »
@Iainb: There's a few links on the web about it, Google apparently removed it as of Android 6 but manufacturers found ways around it.
With Android 9 they really locked it down to the point where if you want to do call recording then you're probably going to need root, (or alternative firmware, eg. Lineage, etc).

The problem was that different countries have different laws regarding call recording, (eg. UK only requires one of participating parties, Germany requires both parties to give permission), so they took the only reasonable option and disabled it.

NOTE: This is all w.r.t. stock Android.

4
Living Room / Re: Free call recorder for Android
« on: September 15, 2019, 06:50 PM »
He's got a Moto G7 Power, they run, (for all intents), stock Android - in his case, v9.

I run an automatic call recorder on my Moto G5+, works fine however it's reviews are full of "doesn't record anything" because they're using it on phones running Android 9, (usually a Samsung 9 or 10 in the reviews).

Nothing stopping him from trying any and all of them ... just thought I'd mention that the underlying OS interface to do it no longer exists.

5
Living Room / Re: Free call recorder for Android
« on: September 13, 2019, 09:36 PM »
The API required was completely removed in Android 9 and as Motorola is pretty much stock Android you're probably out of luck.

6
General Software Discussion / Re: What Android Apps Do You Use?
« on: September 06, 2019, 06:35 AM »
NewPipe - free lightweight YouTube client.

NewPipe has been created with the purpose of getting the original YouTube experience on your smartphone without annoying ads and questionable permissions.

Aurora Droid

An alternative to the default F-Droid app with an intuitive UI and multiple great features, such as

  • Many repos listed and can be enabled
  • Beautiful design - Follows latest Material Design guidelines
  • Powerful download manager - Pause, resume and retry downloading apps
  • Previous releases - Enables downloading old releases
  • Lists architectures (arm, arm64 ...) and minimal Android versions

7
Strange about MPlayer, I literally just downloaded, extracted, used the command on both video and audio files, and it worked.

8
Living Room / Re: Interesting "stuff"
« on: August 30, 2019, 05:57 AM »
Can this grill-cleaning robot save you stress this summer?

Leave the grill in the Weber, let the bits get carbonised next time, run a wire brush over the grill, cook.

No stress, costs less than $2 every few years (for a new brush, use it for cleaning up welds too) ... all I've done for the last 30 years.

10
Monolith - a data hoarder's dream come true: bundle any web page into a single HTML file:
https://github.com/Y2Z/monolith
This one seems for Linux only. Any similar for Windows available ?

It's written in Rust, you can install and compile on Windows (or even compile it under WSL - Windows Subsystem for Linux) ... try the attached.

11
You could try mplayer if you don't mind the CLI:

Code: Text [Select]
  1. mplayer -endpos 00:01:00 *.mp3

12
General Software Discussion / Re: Gmail to SMS
« on: August 23, 2019, 03:13 PM »
Addendum: added info for Pushetta notification, (a completely free service).

NOTE: Gotify - Android only client (not likely to be a iOS app due to how app store works)
Pushetta - Android and iOS clients

Original GMail script courtesy the author noted, I've added the few additions for the Gotify notification.  You'd want to loop it, apply your filter, compare last email ID to make sure you're not resending a push notification, and probably tidy it up by putting things in functions, etc but that's all relatively simple.

Code: PowerShell [Select]
  1. #-------------------------------------------------------------------------------
  2. # Name:        get_gmail.ps1
  3. # URL:         http://gallery.technet.microsoft.com/scriptcenter/Get-new-gmail-emails-a0aa3db8
  4. #
  5. # Purpose:     Get new email headers from gmail - read only.
  6. #
  7. # Usage:       Enter username and password the first time which will be saved.
  8. #
  9. # Author:      Amir Hanna
  10. #
  11. # Created:     20/07/2014
  12. # Copyright:   Public domain
  13. # Version:     2
  14. #-------------------------------------------------------------------------------
  15.  
  16. $script_folder = Split-Path $MyInvocation.MyCommand.Path
  17. $username_file = ($script_folder + "\user")
  18. $pass_file = ($script_folder + "\pass")
  19.  
  20. if ( !(Test-Path -LiteralPath $username_file -PathType Leaf) -or !(Test-Path -LiteralPath $pass_file -PathType Leaf) ) {
  21.   Write-Host "Please type a username: "
  22.   Read-Host | Set-Content -LiteralPath $username_file
  23.  
  24.   Write-Host "Please type a password: "
  25.   Read-Host -AsSecureString | ConvertFrom-SecureString > $pass_file
  26. }
  27.  
  28. $username = Get-Content $username_file
  29. $pass = Get-Content $pass_file | ConvertTo-SecureString
  30.  
  31. $credentials = New-Object System.Management.Automation.PsCredential($username, $pass)
  32.  
  33. $webclient = new-object System.Net.WebClient
  34. $webclient.Credentials = $credentials
  35.  
  36. [xml]$xml= $webclient.DownloadString("https://mail.google.com/mail/feed/atom")
  37.  
  38. if (!$xml) { return }
  39.  
  40. Write-Host -BackgroundColor Red -ForegroundColor White "You have", $xml.feed.fullcount, "new emails."
  41.  
  42. $format= @{Expression={[string][System.Math]::Round(((get-date) - (Get-Date $_.issued)).TotalHours, 1) + " hours"};`
  43.          Label="Received since"; Width=20}, @{Expression={$_.author.name}; Label="From"; Width=20},`
  44.          @{Expression={$_.title}; Label="Subject"}, @{Expression={$_.summary}; Label="Summary"}
  45.  
  46. $xml.feed.entry | format-table $format -wrap
  47.  
  48.  
  49. <# ----------------------------- #>
  50. # Added stuff for Gotify/Pushetta Push notification
  51.  
  52. # Copy the latest XML feed entry to a variable
  53. $latestEmail = ($xml.feed.entry | Select-Object -First 1)
  54.  
  55. <#
  56. $xml.feed.entry.author.email
  57. $xml.feed.entry.author.name
  58. $xml.feed.entry.id
  59. $xml.feed.entry.issued
  60. $xml.feed.entry.link
  61. $xml.feed.entry.modified
  62. $xml.feed.entry.summary
  63. $xml.feed.entry.title
  64. #>
  65.  
  66. # Info for Gotify, if $GoToken is null then no Push is sent
  67. $GoToken = ''   # Token obtained from the Gotify server
  68. $GotifyUrl = '' # eg. http://localhost:8080/message
  69.  
  70. if ($GoToken -ne '') {
  71.   $ContentType = "application/json"
  72.   $Method = "POST"
  73.   $JsonMsg = @{
  74.     message = "From: $($latestEmail.author.name), $($latestEmail.author.email)`r`nID: $($latestEmail.id)`r`nIssued: $($latestEmail.issued)`r`nLink: $($latestEmail.link)`r`nModified: $($latestEmail.modified)`r`nSummary: $($latestEmail.summary)`r`nTitle: $($latestEmail.title)";
  75.     priority=2;
  76.     title="$($model)"
  77.   } | ConvertTo-JSON
  78.   $Header = @{}
  79.   $Header.Add("X-Gotify-Key", $GoToken);
  80.   $Header.Add("accept", "application/json");
  81.   $t = Invoke-RestMethod -Method $Method -Uri $GotifyUrl -Header $Header -Body $JsonMsg -ContentType $ContentType
  82. }
  83.  
  84.  
  85. # Info for Pushetta, if $Token is null then no Push is sent
  86. $Token = ''
  87. $Channel = ''
  88.  
  89. if ($Token -ne '') {
  90.   $Uri ='http://api.pushetta.com/api/pushes/' + $Channel + '/'
  91.   $ContentType = "application/json"
  92.   $Method = "POST"
  93.   $JsonMsg = @{
  94.     body = "From: $($latestEmail.author.name), $($latestEmail.author.email)`r`nID: $($latestEmail.id)`r`nIssued: $($latestEmail.issued)`r`nLink: $($latestEmail.link)`r`nModified: $($latestEmail.modified)`r`nSummary: $($latestEmail.summary)`r`nTitle: $($latestEmail.title)";
  95.     message_type ="text/plain"
  96.   } | ConvertTo-JSON
  97.   $Header = @{}
  98.   $Header.Add("AUTHORIZATION", " Token $($Token)")
  99.   $t = Invoke-RestMethod -Method $Method -Uri $Uri -Header $Header -Body $JsonMsg -ContentType $ContentType
  100. }


The notification you'll end up with from the above, (I've blurred things particular to my server/email).
Screenshot_20190823-211553.png

13
General Software Discussion / Re: Gmail to SMS
« on: August 23, 2019, 06:51 AM »
You can use PowerShell to retrieve your Gmail, filter only those you're interested in and then send a push notification.

I use Gotify as a Push server which keeps it all under my control. They only have an Android client though.

https://github.com/gotify/server

I use Bash and PowerShell scripts that call Gotify when they finish a process.

14
Not suitable due to your requirement for integrating with WAMP/LAMP but when I've had to quickly do something like this, host files over the web from my computer, then I've always found the simplest to be HTTP File Server (HFS).

15
General Software Discussion / Re: Syncovery - OneDrive - Encryption
« on: August 15, 2019, 11:04 AM »
I do assume I would need the pro version to do what I want if Syncovery can do it.

If you want Real-time Sync, Encryption, and Cloud Service integration, then yes.

So you are synching to OneDrive and it is encrypted and it is not a one time synch but can run in the background and automatically updates files added or changed to OneDrive?

Files are encrypted and file changes are mirrored on OneDrive within a few seconds of being detected on the system, (according to the testing I just did).

SyncBack Pro also offers similar features for a similar price, (mentioning because this is what I use at home), doesn't hurt to have more options.

16
Could avoid the GUI altogether and revert to a series of Read-Host prompt/answer inputs plus include the ability to run as a standard command if all parameters are fulfilled on the command line.

Would be the quickest way to make it portable.

W.r.t. filepaths, PowerShell (Core) is pretty agnostic when it comes to using / or \ - either will do, plus it sees multiple occurrences, (eg. ////), as just a single occurrence.

For example, the below are all the same path as far as PoSh (Core) is concerned:
D:\test\data\test.txt
d:test/data/test.txt
d:\\\\\\\\test///////data\\\\test.txt
d:\\\\\\\\test//\\\\data\/\/\/\/test.txt

It makes this aspect of PoSh scripts OS agnostic ... something they got exactly right :Thmbsup:

17
General Software Discussion / Re: Syncovery - OneDrive - Encryption
« on: August 15, 2019, 04:58 AM »
One assumes you're using the Standard version of Syncovery since the Pro/Premium versions can access cloud services directly, (including OneDrive) ... then again, since the Standard version apparently doesn't have encryption (according to their Feature Matrix) ...

One has to wonder exactly which version you are using?


Addendum:
FWIW, just downloaded, installed, and created/ran a profile which synced to OneDrive - took all of 5 minutes.
Select Internet as the destination, select OneDrive from the drop-down selection, fill in the Account, continue with other settings.
When you first run the profile it will open your browser and you can log into Microsoft Live to authorise Syncovery access to OneDrive.

18
Four problems became apparent in PowerShell Core (Windows) for the above code:
  • Initial window size could not be set
  • The font used was not recognised
  • The FileBrowser did not work (locked up the console)
  • The Information window relies on VB routines

It ran and opened a GUI but you couldn't do anything.

I've installed PowerShell Core under Windows Subsytem for Linux (WSL) so I can have a play, (also installed on a RasPi I've got with me) - doesn't run at all under PoShCore (Linux), to be expected.

19
Living Room / Re: Windows 7 always slow after idle
« on: August 14, 2019, 05:25 AM »
The MSI page says for compatibility, that my i5-8600K is only compatible with bios version 7B49v10.

You want this page: CPU Compatibility

The i5-8600(T/K) is listed which means it's supported until they say it's dropped from the BIOS in later versions - which they haven't.

ie. The version listed against a CPU is the minimum version of the BIOS required to support that CPU.

20
Do you think a Powershell Core implementation would make sense?


Yes, definitely ... but since I've only used Windows PowerShell up til now ...

2019-08-14 10_13_42.png

2019-08-14 10_17_17.png

The below is functionally similar to the original PoSh script, the changes are:
  • Put almost everything into Functions so they can be transplanted into other scripts.
  • Added a WPF GUI (the implemented version is just something simple but more than doubles the size of the script) - it would benefit from having a ListBox that shows the selected files and a TextBox that shows the progress of the operation.  I kept it simple so as to not invest too much time into something that might be replaced with either, for example, an Avalonia based interface or some other language/GUI, (eg. Python).
  • Added the ability to convert between RF Explorer, Sennheiser, and Shure input CSVs.  For example, select a Sennheiser file, select the Shure output option, hit Start.
  • Options to either delete the original files and create a distribution archive.

NOTE: In my limited testing it worked fine but there are most likely bugs and there is no error checking, (the original script didn't have any either).

Tested on: Windows 10 Pro x64, PowerShell 5.1.18362.145, .NET 4.8

Broken down into sections, you have:
  • Global variables - there are three, two of them are defined later in the script by prefacing with $global:
  • Functions - file request and working directory creation, conversions, archive creation
  • GUI - everything else plus what happens when you click the buttons

RFExplorer.ps1
Code: PowerShell [Select]
  1. <# This form was created using POSHGUI.com  a free online gui designer for PowerShell
  2. .NAME
  3.     .\RFExplorer.ps1
  4. #>
  5.  
  6. # Global variables
  7. $initMessage = 'This script lets you browse to and select the pertinent .csv spectrum scan files that were output by your RF Explorer device, sort them by creation time, join them together and output 2 seperate files plus the original un-modified scan files into a newly created subdirectory named with the current date and time.
  8.  
  9. 1. SHURE-importable
  10.         Shure Wireless workbench accepts .csv files consisting of
  11.         2 columns (no Headers) -> Frequency in MHz,Level in DBm
  12.         (columns seperated by a comma)
  13.                 492.6,-103
  14.                 492.625,-96
  15.                 492.65,-102
  16. 2. SENNHEISER-Importable
  17.         Sennheiser Wireless Systems Manager is more complicated. They expect a descriptive 2 column header then 3 columns of data -> Frequency in KHz;;Level in DB (columns seperated by a semi-colon)
  18.  
  19.                 Receiver;01
  20.                 Date/Time;$lastwrittentime
  21.                 RFUnit;dB
  22.                 Owner;$FirstName $LastName
  23.                 ScanCity;$ScanCity
  24.                 ScanComment;
  25.                 ScanCountry;$ScanCountry
  26.                 ScanDescription;$ScanDescription
  27.                 ScanInteriorExterior;$ScanInteriorORExterior
  28.                 ScanLatitude;
  29.                 ScanLongitude;
  30.                 ScanName;$ScanName
  31.                 ScanPostalCode;$ScanPostalCode
  32.  
  33.                 Frequency Range [kHz];$FreqRangeL;$FreqRangeH;$FreqSpan
  34.                 Frequency;RF level (%);RF level
  35.                 492600;;4
  36.                 492625;;11
  37.                 492650;;5
  38.  
  39. The $variables in the Sennheiser header get pulled from the info you enter into an initial popup dialog so you can archive AND/OR upload a zip file of the original RF Explorer scan chunks along with the 2 formatted files and a descriptive text file to an online database of venue scans from around the world    http://www.bestaudio.com/spectrum-scans/
  40. I am using Nuts AboutNets Touchstone Pro Software $49US   http://nutsaboutnets.com/touchstone/    to interact with the RF Explorer for setting scan parameters and actually running the scans. The native software that comes with RF explorer can do everything but I found it time consuming to break the spectrum down into smaller chunks to increase resolution'
  41.  
  42. Function Get-Files {
  43.   # Show an Open File Dialog and return the files selected by the user.
  44.   $FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
  45.     InitialDirectory = $scanDirectory
  46. #    InitialDirectory = [Environment]::GetFolderPath('MyDocuments')
  47.     Filter = 'RF Explorer Files|*.csv|All Files|*.*'
  48.     MultiSelect = $true
  49.   }
  50.  
  51.   $null = $FileBrowser.ShowDialog()
  52.  
  53.   if ($FileBrowser.FileNames.Count -eq 0) {
  54.     return
  55.   } else {
  56.     $RFexplorerDataDirectory = Split-Path $FileBrowser.FileNames[0] -Parent
  57.     $global:lastwrittentime = (Get-ItemProperty -Path $FileBrowser.FileNames[0]).LastWriteTime.tostring("MM-MMMM-dd-yyyy-hh-mm-ss")
  58.   }
  59.  
  60.   $currentdatetime = Get-Date -f ("MM-MMMM-dd-yyyy-hh-mm-ss")
  61.   $destDir = "$($RFexplorerDataDirectory)\$($currentdatetime)"
  62.   New-Item -ItemType Directory "$($destDir)" | Out-Null
  63.  
  64.   # Copy/Move selected files to Destination directory
  65.   for ($i = 0; $i -lt $FileBrowser.FileNames.Count; $i++) {
  66.   # Clear out non-CSV files from destination directory
  67.     if ($CheckBox1.CheckState) {
  68.       Move-Item $FileBrowser.FileNames[$i] -dest "$destDir"
  69.     } else {
  70.       Copy-Item $FileBrowser.FileNames[$i] -dest "$destDir"
  71.     }
  72.   }
  73.   return $destDir
  74. }
  75.  
  76. Function Senn-RFE {
  77.   param (
  78.     [double]$n1,
  79.     [double]$n2
  80.   )
  81.   if ($n1 -gt 1000) {
  82.     $n1 /= 1000
  83.     $n2 -= 107
  84.   }
  85.   return "$($n1);$($n2)"
  86. }
  87.  
  88. Function ConvertTo-RFE {
  89.   param (
  90.     [string]$file
  91.   )
  92.   Get-Content $file | `
  93.     Where-Object {$_ -match '^\d+.+'} | `
  94.     Foreach-Object {$_ -replace ";;" , ";"} | `
  95.     Foreach-Object {$_ -replace "," , ";"} | `
  96.     ForEach-Object {$fields = $_.Split(";") ;
  97.       Out-File -FilePath "intermediate.tmp" -InputObject (Senn-RFE $fields[0] $fields[1]) -Append -Encoding utf8}
  98. }
  99.  
  100. Function ConvertTo-Shure {
  101.   param (
  102.     [string]$file
  103.   )
  104.   (Get-Content $file) | `
  105.     Foreach-Object {$_ -replace " -" , "-"} | `
  106.     Foreach-Object {$_ -replace ";" , ","} | `
  107.     Set-Content -Path "SHURE-Importable-$($lastwrittentime).csv"
  108. }
  109.  
  110.  
  111. Function ConvertTo-Sennheiser {
  112.   param (
  113.     [string]$file
  114.   )
  115.   # Create a new array to temporarily house the dBm to dB conversion data that comes later
  116.   $BeingModified = New-Object System.Collections.ArrayList
  117.  
  118.   (Get-Content $file) | `
  119. #    Foreach-Object {$_ -replace "(\d{3})\.(\d{2})" , '$1$2'} |
  120. #    Foreach-Object {$_ -replace "(-\d{3})(\d{2})" , '$1.$2'} |
  121.     Foreach-Object {$_ -replace ";" , ";;"} | `
  122.     Foreach-Object {$_ -replace "," , ";;"} | `
  123. # Change the RF Level data from dBm to Sennheisers' dB by adding 107
  124.     Foreach-Object {$_
  125.       $fields = $_.Split(";")
  126.       $freq = [double]$fields[0]*1000
  127.       #$blank = $fields[1]
  128.       $dBm = [double]$fields[2]
  129.       [double]$dB = $dBm + 107
  130.       # Create array with the new values to use later to replace things in the new output file
  131.       [void]$BeingModified.Add("$freq;;$dB")
  132.     }
  133.  
  134.   $BeingModified | Set-Content $file
  135.   $wwbbasefile = "$($destDirectory)\$($file)"
  136.  
  137.   # Get FreqRange and Span Data into variables
  138.  
  139.   $FreqRangeL = Get-Content $wwbbasefile | Select -First 1
  140.   $FreqRangeH = Get-Content $wwbbasefile | Select -Last 1
  141.   $FreqRange_ = Get-Content $wwbbasefile | Select -Last 2
  142.  
  143.   # parse the CSV data back into separate variables, one for each column
  144.  
  145.   $dataArrayL = $FreqRangeL.Split(";")
  146.   $FreqRangeL = $dataArrayL[0]
  147.  
  148.   $dataArrayH = $FreqRangeH.Split(";")
  149.   $FreqRangeH = $dataArrayH[0]
  150.  
  151.   $dataArray_ = $FreqRange_.Split(";")
  152.   $FreqRange_ = $dataArray_[0]
  153.  
  154.   # Calculate the frequency span
  155.   $FreqSpan = $FreqRangeH - $FreqRange_
  156.  
  157.   # Define the Header required for Sennheiser Wireless Systems Manager to be able to read the .csv file
  158.  
  159.   $sennheader=
  160. @"
  161. Receiver;01
  162. Date/Time;$lastwrittentime
  163. RFUnit;dB
  164. Owner;$($TextBox1.Text) $($TextBox2.Text)
  165. ScanCity;$($TextBox3.Text)
  166. ScanComment;
  167. ScanCountry;$($ComboBox1.Text)
  168. ScanDescription;$($TextBox4.Text)
  169. ScanInteriorExterior;$($ComboBox2.Text)
  170. ScanLatitude;
  171. ScanLongitude;
  172. ScanName;$($TextBox5.Text)
  173. ScanPostalCode;$($TextBox6.Text)
  174. Frequency Range [kHz];$FreqRangeL;$FreqRangeH;$FreqSpan
  175. Frequency;RF level (%);RF level
  176. "@
  177.  
  178.  
  179.   # Insert the header text into  a text file
  180.   $sennheader | Set-Content sennheader.txt
  181.  
  182.   # Join the header file and .csv data into final output file
  183.   Get-Content sennheader.txt, $wwbbasefile | Set-Content "SENNHEISER-Importable-$($lastwrittentime).csv"
  184. }
  185.  
  186. Function Create-Distribution {
  187.   # Create a directory to store the zipped results for upload to Pet Erskines database
  188.   New-Item -ItemType Directory "$destDirectory\For Distribution" | Out-Null
  189.   $zipName = "$($destDirectory)\For Distribution\$($TextBox3.Text)-$($TextBox7.Text)-$($ComboBox1.Text)-$($TextBox8.Text)-$($lastwrittentime)-$($TextBox1.Text)-$($TextBox2.Text).zip"
  190.   Compress-Archive -Path "$($destDirectory)\*.csv" -DestinationPath "$($zipName)"
  191. }
  192.  
  193. Add-Type -AssemblyName Microsoft.VisualBasic
  194. Add-Type -AssemblyName System.Windows.Forms
  195. [System.Windows.Forms.Application]::EnableVisualStyles()
  196.  
  197. $Form                            = New-Object system.Windows.Forms.Form
  198. $Form.ClientSize                 = '400,500'
  199. $Form.text                       = "RFTSSE"
  200. $Form.TopMost                    = $false
  201.  
  202. $Label1                          = New-Object system.Windows.Forms.Label
  203. $Label1.text                     = "First Name:"
  204. $Label1.AutoSize                 = $true
  205. $Label1.width                    = 25
  206. $Label1.height                   = 10
  207. $Label1.location                 = New-Object System.Drawing.Point(25,20)
  208. $Label1.Font                     = 'Microsoft Sans Serif,10'
  209.  
  210. $TextBox1                        = New-Object system.Windows.Forms.TextBox
  211. $TextBox1.multiline              = $false
  212. $TextBox1.width                  = 210
  213. $TextBox1.height                 = 20
  214. $TextBox1.location               = New-Object System.Drawing.Point(160,18)
  215. $TextBox1.Font                   = 'Microsoft Sans Serif,10'
  216.  
  217. $Label2                          = New-Object system.Windows.Forms.Label
  218. $Label2.text                     = "Last Name:"
  219. $Label2.AutoSize                 = $true
  220. $Label2.width                    = 25
  221. $Label2.height                   = 10
  222. $Label2.location                 = New-Object System.Drawing.Point(25,46)
  223. $Label2.Font                     = 'Microsoft Sans Serif,10'
  224.  
  225. $TextBox2                        = New-Object system.Windows.Forms.TextBox
  226. $TextBox2.multiline              = $false
  227. $TextBox2.width                  = 210
  228. $TextBox2.height                 = 20
  229. $TextBox2.location               = New-Object System.Drawing.Point(160,43)
  230. $TextBox2.Font                   = 'Microsoft Sans Serif,10'
  231.  
  232. $Label3                          = New-Object system.Windows.Forms.Label
  233. $Label3.text                     = "Scan City:"
  234. $Label3.AutoSize                 = $true
  235. $Label3.width                    = 25
  236. $Label3.height                   = 10
  237. $Label3.location                 = New-Object System.Drawing.Point(25,70)
  238. $Label3.Font                     = 'Microsoft Sans Serif,10'
  239.  
  240. $TextBox3                        = New-Object system.Windows.Forms.TextBox
  241. $TextBox3.multiline              = $false
  242. $TextBox3.width                  = 210
  243. $TextBox3.height                 = 20
  244. $TextBox3.location               = New-Object System.Drawing.Point(160,68)
  245. $TextBox3.Font                   = 'Microsoft Sans Serif,10'
  246.  
  247. $Label4                          = New-Object system.Windows.Forms.Label
  248. $Label4.text                     = "Scan Country:"
  249. $Label4.AutoSize                 = $true
  250. $Label4.width                    = 25
  251. $Label4.height                   = 10
  252. $Label4.location                 = New-Object System.Drawing.Point(25,95)
  253. $Label4.Font                     = 'Microsoft Sans Serif,10'
  254.  
  255. $ComboBox1                       = New-Object system.Windows.Forms.ComboBox
  256. $ComboBox1.width                 = 210
  257. $ComboBox1.height                = 20
  258. @("Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Antarctic Territory","British Indian Ocean Territory","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Canton and Enderbury Islands","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos [Keeling] Islands","Colombia","Comoros","Congo - Brazzaville","Congo - Kinshasa","Cook Islands","Costa Rica","Croatia","Cuba","Cyprus","Czech Republic","Côte d’Ivoire","Denmark","Djibouti","Dominica","Dominican Republic","Dronning Maud Land","East Germany","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","French Southern and Antarctic Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Honduras","Hong Kong SAR China","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Johnston Island","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau SAR China","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Metropolitan France","Mexico","Micronesia","Midway Islands","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar [Burma]","Namibia","Nauru","Nepal","Netherlands","Netherlands Antilles","Neutral Zone","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Vietnam","Northern Mariana Islands","Norway","Oman","Pacific Islands Trust Territory","Pakistan","Palau","Palestinian Territories","Panama","Panama Canal Zone","Papua New Guinea","Paraguay","People's Democratic Republic of Yemen","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Romania","Russia","Rwanda","Réunion","Saint Barthélemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Saudi Arabia","Senegal","Serbia","Serbia and Montenegro","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Korea","Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Swaziland","Sweden","Switzerland","Syria","São Tomé and Príncipe","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","U.S. Minor Outlying Islands","U.S. Miscellaneous Pacific Islands","U.S. Virgin Islands","Uganda","Ukraine","Union of Soviet Socialist Republics","United Arab Emirates","United Kingdom","United States","Unknown or Invalid Region","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Wake Island","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe","Åland Islands") | ForEach-Object {[void] $ComboBox1.Items.Add($_)}
  259. $ComboBox1.location              = New-Object System.Drawing.Point(160,93)
  260. $ComboBox1.Font                  = 'Microsoft Sans Serif,10'
  261.  
  262. $Label5                          = New-Object system.Windows.Forms.Label
  263. $Label5.text                     = "Scan Description:"
  264. $Label5.AutoSize                 = $true
  265. $Label5.width                    = 25
  266. $Label5.height                   = 10
  267. $Label5.location                 = New-Object System.Drawing.Point(25,121)
  268. $Label5.Font                     = 'Microsoft Sans Serif,10'
  269.  
  270. $TextBox4                        = New-Object system.Windows.Forms.TextBox
  271. $TextBox4.multiline              = $false
  272. $TextBox4.width                  = 210
  273. $TextBox4.height                 = 20
  274. $TextBox4.location               = New-Object System.Drawing.Point(160,119)
  275. $TextBox4.Font                   = 'Microsoft Sans Serif,10'
  276.  
  277. $Label6                          = New-Object system.Windows.Forms.Label
  278. $Label6.text                     = "Scan Int or Ext:"
  279. $Label6.AutoSize                 = $true
  280. $Label6.width                    = 25
  281. $Label6.height                   = 10
  282. $Label6.location                 = New-Object System.Drawing.Point(25,146)
  283. $Label6.Font                     = 'Microsoft Sans Serif,10'
  284.  
  285. $ComboBox2                       = New-Object system.Windows.Forms.ComboBox
  286. $ComboBox2.width                 = 210
  287. $ComboBox2.height                = 20
  288. @('Interior','Exterior') | ForEach-Object {[void] $ComboBox2.Items.Add($_)}
  289. $ComboBox2.location              = New-Object System.Drawing.Point(160,144)
  290. $ComboBox2.Font                  = 'Microsoft Sans Serif,10'
  291.  
  292. $Label7                          = New-Object system.Windows.Forms.Label
  293. $Label7.text                     = "Scan Name:"
  294. $Label7.AutoSize                 = $true
  295. $Label7.width                    = 25
  296. $Label7.height                   = 10
  297. $Label7.location                 = New-Object System.Drawing.Point(25,172)
  298. $Label7.Font                     = 'Microsoft Sans Serif,10'
  299.  
  300. $TextBox5                        = New-Object system.Windows.Forms.TextBox
  301. $TextBox5.multiline              = $false
  302. $TextBox5.width                  = 210
  303. $TextBox5.height                 = 20
  304. $TextBox5.location               = New-Object System.Drawing.Point(160,170)
  305. $TextBox5.Font                   = 'Microsoft Sans Serif,10'
  306.  
  307. $Label8                          = New-Object system.Windows.Forms.Label
  308. $Label8.text                     = "Scan Postcode:"
  309. $Label8.AutoSize                 = $true
  310. $Label8.width                    = 25
  311. $Label8.height                   = 10
  312. $Label8.location                 = New-Object System.Drawing.Point(25,197)
  313. $Label8.Font                     = 'Microsoft Sans Serif,10'
  314.  
  315. $TextBox6                        = New-Object system.Windows.Forms.TextBox
  316. $TextBox6.multiline              = $false
  317. $TextBox6.width                  = 210
  318. $TextBox6.height                 = 20
  319. $TextBox6.location               = New-Object System.Drawing.Point(160,195)
  320. $TextBox6.Font                   = 'Microsoft Sans Serif,10'
  321.  
  322. $Label9                          = New-Object system.Windows.Forms.Label
  323. $Label9.text                     = "Scan State/Province:"
  324. $Label9.AutoSize                 = $true
  325. $Label9.width                    = 25
  326. $Label9.height                   = 10
  327. $Label9.location                 = New-Object System.Drawing.Point(25,222)
  328. $Label9.Font                     = 'Microsoft Sans Serif,10'
  329.  
  330. $TextBox7                        = New-Object system.Windows.Forms.TextBox
  331. $TextBox7.multiline              = $false
  332. $TextBox7.width                  = 210
  333. $TextBox7.height                 = 20
  334. $TextBox7.location               = New-Object System.Drawing.Point(160,220)
  335. $TextBox7.Font                   = 'Microsoft Sans Serif,10'
  336.  
  337. $Label10                         = New-Object system.Windows.Forms.Label
  338. $Label10.text                    = "Scan Venue:"
  339. $Label10.AutoSize                = $true
  340. $Label10.width                   = 25
  341. $Label10.height                  = 10
  342. $Label10.location                = New-Object System.Drawing.Point(25,247)
  343. $Label10.Font                    = 'Microsoft Sans Serif,10'
  344.  
  345. $TextBox8                        = New-Object system.Windows.Forms.TextBox
  346. $TextBox8.multiline              = $false
  347. $TextBox8.width                  = 210
  348. $TextBox8.height                 = 20
  349. $TextBox8.location               = New-Object System.Drawing.Point(160,245)
  350. $TextBox8.Font                   = 'Microsoft Sans Serif,10'
  351.  
  352. $Button1                         = New-Object system.Windows.Forms.Button
  353. $Button1.text                    = "Select files ..."
  354. $Button1.width                   = 300
  355. $Button1.height                  = 30
  356. $Button1.location                = New-Object System.Drawing.Point(50,280)
  357. $Button1.Font                    = 'Microsoft Sans Serif,10'
  358.  
  359. $Button2                         = New-Object system.Windows.Forms.Button
  360. $Button2.text                    = "Start"
  361. $Button2.width                   = 95
  362. $Button2.height                  = 30
  363. $Button2.location                = New-Object System.Drawing.Point(50,320)
  364. $Button2.Font                    = 'Microsoft Sans Serif,10'
  365.  
  366. $Label11                         = New-Object system.Windows.Forms.Label
  367. $Label11.text                    = "Output"
  368. $Label11.AutoSize                = $true
  369. $Label11.width                   = 25
  370. $Label11.height                  = 10
  371. $Label11.location                = New-Object System.Drawing.Point(228,330)
  372. $Label11.Font                    = 'Microsoft Sans Serif,10'
  373.  
  374. $RadioButton1                    = New-Object system.Windows.Forms.RadioButton
  375. $RadioButton1.text               = "Sennheiser"
  376. $RadioButton1.AutoSize           = $true
  377. $RadioButton1.width              = 104
  378. $RadioButton1.height             = 20
  379. $RadioButton1.location           = New-Object System.Drawing.Point(213,350)
  380. $RadioButton1.Font               = 'Microsoft Sans Serif,10'
  381.  
  382. $RadioButton2                    = New-Object system.Windows.Forms.RadioButton
  383. $RadioButton2.text               = "Shure"
  384. $RadioButton2.AutoSize           = $true
  385. $RadioButton2.width              = 104
  386. $RadioButton2.height             = 20
  387. $RadioButton2.location           = New-Object System.Drawing.Point(213,370)
  388. $RadioButton2.Font               = 'Microsoft Sans Serif,10'
  389.  
  390. $RadioButton3                    = New-Object system.Windows.Forms.RadioButton
  391. $RadioButton3.text               = "RF Explorer"
  392. $RadioButton3.AutoSize           = $true
  393. $RadioButton3.width              = 104
  394. $RadioButton3.height             = 20
  395. $RadioButton3.location           = New-Object System.Drawing.Point(213,390)
  396. $RadioButton3.Font               = 'Microsoft Sans Serif,10'
  397.  
  398. $RadioButton4                    = New-Object system.Windows.Forms.RadioButton
  399. $RadioButton4.text               = "Combined"
  400. $RadioButton4.AutoSize           = $true
  401. $RadioButton4.width              = 104
  402. $RadioButton4.height             = 20
  403. $RadioButton4.Checked            = $true
  404. $RadioButton4.location           = New-Object System.Drawing.Point(213,410)
  405. $RadioButton4.Font               = 'Microsoft Sans Serif,10'
  406.  
  407. $CheckBox1                       = New-Object system.Windows.Forms.CheckBox
  408. $CheckBox1.text                  = "Delete originals"
  409. $CheckBox1.AutoSize              = $false
  410. $CheckBox1.width                 = 120
  411. $CheckBox1.height                = 20
  412. $CheckBox1.location              = New-Object System.Drawing.Point(50,370)
  413. $CheckBox1.Font                  = 'Microsoft Sans Serif,10'
  414.  
  415. $CheckBox2                       = New-Object system.Windows.Forms.CheckBox
  416. $CheckBox2.text                  = "Create archive"
  417. $CheckBox2.AutoSize              = $false
  418. $CheckBox2.width                 = 120
  419. $CheckBox2.height                = 20
  420. $CheckBox2.Checked               = $true
  421. $CheckBox2.location              = New-Object System.Drawing.Point(50,390)
  422. $CheckBox2.Font                  = 'Microsoft Sans Serif,10'
  423.  
  424. $Button3                         = New-Object system.Windows.Forms.Button
  425. $Button3.text                    = "Information"
  426. $Button3.width                   = 100
  427. $Button3.height                  = 30
  428. $Button3.location                = New-Object System.Drawing.Point(150,440)
  429. $Button3.Font                    = 'Microsoft Sans Serif,10'
  430.  
  431. $Form.controls.AddRange(@($Label1,$Label2,$Label3,$Label4,$Label5,$Label6,$Label7,$Label8,$Label9,$Label10,$Label11,$TextBox1,$TextBox2,$TextBox3,$TextBox4,$TextBox5,$TextBox6,$TextBox7,$TextBox8,$ComboBox1,$ComboBox2,$Button1,$Button2,$Button3,$RadioButton1,$RadioButton2,$RadioButton3,$RadioButton4,$CheckBox1,$CheckBox2))
  432.  
  433. # Select Files Button
  434. $Button1.Add_Click({
  435.   # Get the directory the working files are in
  436.   $global:destDirectory = Get-Files
  437.  
  438.   # Destination directory becomes working directory, so Push it
  439.   Push-Location -Path "$destDirectory"
  440.  
  441.   # Sort RF Explorer created .csv files by date and time, concat them into a temporary file
  442.   Get-ChildItem *.csv | sort LastWriteTime | % {$(Get-Content $_)} | Set-Content joined.tmp
  443. })
  444.  
  445. # Start Button
  446. $Button2.Add_Click({
  447.   if ($RadioButton1.Checked) {
  448.     ConvertTo-RFE joined.tmp
  449.     ConvertTo-Sennheiser intermediate.tmp
  450.   }
  451.   if ($RadioButton2.Checked) {
  452.     ConvertTo-RFE joined.tmp
  453.     ConvertTo-Shure intermediate.tmp
  454.   }
  455.   if ($RadioButton3.Checked) {
  456.     ConvertTo-RFE joined.tmp
  457.   }
  458.   if ($RadioButton4.Checked) {
  459.     ConvertTo-Shure joined.tmp
  460.     ConvertTo-Sennheiser joined.tmp
  461.   }
  462.  
  463.   # Remove non-CSV files
  464.   Remove-Item -Path "$($destDirectory)\*" -Exclude *.csv
  465.  
  466.   # Create archive for distribution
  467.   if ($CheckBox2.CheckState) {
  468.     Create-Distribution
  469.   }
  470.  
  471.   Pop-Location
  472. })
  473.  
  474. # Information Button
  475. $Button3.Add_Click({
  476.   $result = [Microsoft.VisualBasic.Interaction]::MsgBox($initMessage, 'OKOnly,SystemModal,Information', 'RFTSSE')
  477. })
  478.  
  479. [void]$Form.ShowDialog()

21
Living Room / Re: Windows 7 always slow after idle
« on: August 13, 2019, 05:10 AM »
I've usually found that when I've done a BIOS update, changed/reset BIOS, moved a system drive to another motherboard, or something similar and the system crashes on Windows start consistently (including in Safe Mode) then I've done something stupid like specified AHCI i.l.o. SATA (or v.v.) in the BIOS.

Changing it back to SATA (or AHCI) has normally fixed the problem - this can also apply to any 3rd party SATA i/face chipsets.

22
I tried the script out on a Windows 10 Pro box, but didn't notice dialog boxes being behind things.  Script execution was tested both from Windows Explorer as well as from a Powershell window.  It might be helpful to be able to replicate the issue -- perhaps it's for particular versions of Windows?

Interestingly, I always had one of its dialogs open behind other windows, (either the OpenFile or the final Retry/Cancel), until I added the above run check.

The Retry/Cancel dialog still opens behind other windows sometimes.

The other problem, which I believe is related to the use of the Show-Command cmdlet, is that selecting Cancel still opens the OpenFile dialog.

Regarding running on macos, I looked a bit into 4wd's Avalonia idea, and came across: https://github.com/i...nsoftware/psavalonia "Avalonia bindings for PowerShell".  The supported versions of Powershell there look like Powershell Core though, so I tried running the script via Powershell Core.  The result was a fair number of error messages so I stopped its execution.

Due to the use of Show-Command, it tries to create a Window using WPF, (by the looks), and fails under PowerShell Core, (doesn't exist) - you get the errors in PoShCore regardless of whether Avalonia is installed or not.

Regarding "Convert .csv between existing manufacturer created scans", perhaps if this general conversion portion were implemented, the current script might benefit from being based on it.

This would be a better idea, I might get a chance to look at it later and try and isolate the relevant routines, (still overseas on a low-powered laptop atm).

23
what's this?
[ Invalid Attachment ]

Those four icons are inserted into all windows by DisplayFusion:
  • Resize window to 60% of the monitor in the lower right corner
  • Resize to 50% screen size, full height, right side
  • Next wallpaper for all monitors
  • Pin window as topmost

There are many more operations that can be pinned to a windows titlebar.

The meaning of VT is to test any site or file BEFORE downloading anything, not to download and only then test.

The meaning of VT is to test any file, not just before you download - that's why it has an upload file feature.

After all, how do expect to test a suspicious file that comes in via, for example, email, another computer on a network, a flash drive, etc, etc ?

24
In it's current form, there is a niggling issue where a file selection dialog popup appears behind the main window and unless you know it's there, the thing appears to be locked up. I was unable to solve it in a reasonable amount of time and got frustrated.

From here System.Windows.Forms.OpenFileDialog always ontop - add a check for how the script was run and set $ShowHelp appropriately:

Code: PowerShell [Select]
  1. function Read-OpenFileDialog([string]$WindowTitle, [string]$InitialDirectory, [string]$Filter = "All files (*.*)|*.*", [switch]$AllowMultiSelect)
  2. {
  3.     Add-Type -AssemblyName System.Windows.Forms
  4.     $openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
  5.     $ShowHelp = $false
  6. # See https://community.idera.com/database-tools/powershell/ask_the_experts/f/learn_powershell_from_don_jones-24/13493/system-windows-forms-openfiledialog-always-ontop
  7.     if ($Host.name -eq "ConsoleHost") {$ShowHelp = $true}
  8.     $openFileDialog.Title = $WindowTitle
  9.     if (![string]::IsNullOrWhiteSpace($InitialDirectory)) { $openFileDialog.InitialDirectory = $InitialDirectory }
  10.     $openFileDialog.Filter = $Filter
  11.     if ($AllowMultiSelect) { $openFileDialog.MultiSelect = $true }
  12.     $openFileDialog.ShowHelp = $ShowHelp    # Without this line the ShowDialog() function may hang depending on system configuration and running from console vs. ISE.
  13.     $openFileDialog.ShowDialog() > $null
  14.     if ($AllowMultiSelect) { return $openFileDialog.Filenames } else { return $openFileDialog.Filename }
  15. }

25
There's now the Avalonia Project which provides a cross-platform UI solution for PowerShell (using XAML), (Windows, Linux, OSX), currently in beta but it shouldn't be hard to add a simple GUI to the script.

Pages: [1] 2 3 4 5 6 ... 208next