# Powershell: Converting a String to an Integer

In creating a Powershell script to create a Microsoft Word document from CSV data I came across a little problem. In this snippet of code (the $patientAge and$patientName variables are populated with data from the CSV file) I want to highlight a patient’s name in yellow if they’re a minor:

 If ($patientAge -lt 18) {$objSelection.font.Shading.BackgroundPatternColor = 65535 } $objSelection.TypeText($patientName) 

And it works fine if the patient age is two digits or less. But, if a patient age is 100 or higher – three digits, in other words – it would trigger as if they were a minor.

The fix was to convert the variable I’m using for the patient age into an integer and run the logic against it instead:

 $patientAgeInt=[int]$patientAge If ($patientAgeInt -lt 18) {$objSelection.font.Shading.BackgroundPatternColor = 65535 } $objSelection.TypeText($patientName) 

Boom, problem solved.

# Powershell: Convert Word documents to PDF

# This script uses Microsoft Word to convert all .doc and .docx files # within a folder to PDF files. # # Note 1: Word runs invisibly in the background while the script is running. # Note 2: This script will not overwrite existing PDF files.

 # Set the folder where the .doc and .docx files are $folder = 'c:\path\to\folder\' # Create an instance of Word$word = New-Object -ComObject Word.Application # Find all .doc and .docx files in $folder and # loop through them, saving them as PDF files. Get-ChildItem -Path$folder -Filter *.doc? | ForEach-Object { # Open the doc? file $file =$word.Documents.Open($_.FullName) # Change the file extension to .pdf$pdf = "$($_.DirectoryName)\$($_.BaseName).pdf" # Save and close the file # If a PDF file with this name already exists it will NOT be overwritten. $file.SaveAs([ref]$pdf, [ref] 17) $file.Close() }  # Exit Word$word.Quit()