Avatar of Alex
AlexFlag for United Kingdom of Great Britain and Northern Ireland

asked on 

Tricky powershell this time

Right,

So I have a function to bring up a date and time


[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 

Function Prompt-For-Date
{
Param(  
    [string]$sDatePrompt = "Select a Date"
) #End Param

$script:dtmDate = ''
$objForm = New-Object Windows.Forms.Form 

$objForm.Text = $sDatePrompt
$objForm.Size = New-Object Drawing.Size @(300,300) 
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True

$objForm.Add_KeyDown({
    if ($_.KeyCode -eq "Enter") 
        {
            $script:dtmDate = $objCalendar.SelectionStart
            $objForm.Close()
            
        }
    })

$objForm.Add_KeyDown({
    if ($_.KeyCode -eq "Escape") 
        {
            $objForm.Close()
        }
    })

$objCalendar = New-Object System.Windows.Forms.MonthCalendar 
$objCalendar.ShowTodayCircle = $False
$objCalendar.MaxSelectionCount = 1
$objForm.Controls.Add($objCalendar) 

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})  
[void] $objForm.ShowDialog()
return $script:dtmDate


}

$dateReturned = Prompt-For-Date -sDatePrompt "Please Select A Date"
Write-Host "Date:" $dateReturned

Open in new window


I have a bit of code which will pull information

function Copy-SelectedFile
{
    [CmdletBinding()]
    param(
        [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
        [ValidateScript({Test-Path -path $_})]
        [string]$SourcePath,

        [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
        [string]$DestinationPath,

        [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
        [System.Management.Automation.PSCredential]$Credential = (Get-Credential), 

        [parameter(ValueFromPipelineByPropertyName = $true)]
        [datetime]$MinimumAgeTime = ([datetime]::now), 

        [parameter(ValueFromPipelineByPropertyName = $true)]
        [datetime]$MaximumAgeTime
    )

    $Files = Get-ChildItem -Path $SourcePath | Where-Object { $_.LastWriteTime -gt $MinimumAgeTime -and $_.LastWriteTime -lt $MaximumAgeTime}
    
    $Destination = New-Item -Path $DestinationPath -ItemType Directory -Name $MinimumAgeTime.ToString('ddMMyy')
    Copy-Item -Path $Files -Destination $Destination -Credential $Credential -Recurse
}

Open in new window



How the hell do I get my date and time to get pushed into the second bit of code to pull the data off the disk?1?!?!?!?!?!?!?

Any help would be great.

Thanks
Alex
Powershell

Avatar of undefined
Last Comment
Alex
Avatar of Qlemo
Qlemo
Flag of Germany image

If you want to keep the scripts separate, append
$dateReturned

Open in new window

to the first code, and run something like
. c:\path\to\script\script2.ps1     # imports the function for use
$date = c:\path\to\script\script1.ps1
Copy-SelectedFile -MinimumAgeTime $date -MaximumAgeTime $date.AddDays(1) C:\Test\ D:\Test\

Open in new window

or similar. Note that you need to dates for the function.
Avatar of Alex
Alex
Flag of United Kingdom of Great Britain and Northern Ireland image

ASKER

There isn't any reason to keep them separate, I just have no idea how to join them... :(
ASKER CERTIFIED SOLUTION
Avatar of Qlemo
Qlemo
Flag of Germany image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of Alex
Alex
Flag of United Kingdom of Great Britain and Northern Ireland image

ASKER

Oh my... oh my.... GOOODNESS!!!!!

Key reference to Boku no hero acadamia...

Thank you, that's perfect.... You... Little... LEGEND!
Powershell
Powershell

Windows PowerShell is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and associated scripting language built on the .NET Framework. PowerShell provides full access to the Component Object Model (COM) and Windows Management Instrumentation (WMI), enabling administrators to perform administrative tasks on both local and remote Windows systems as well as WS-Management and Common Information Model (CIM) enabling management of remote Linux systems and network devices.

27K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo