Functions/ConvertTo-WinSCPEscapedString.ps1
<#
.SYNOPSIS Escapes special characters in string. .DESCRIPTION Escapes special characters so they are not misinterpreted as wildcards or other special characters. .INPUTS None. .OUTPUTS System.String. .PARAMETER FileMask File path to convert. .EXAMPLE ConvertTo-WinSCPEscapedString -FileMask "*.txt" [*].txt .EXAMPLE $session = New-WinSCPSessionOptions -Hostname myftphost.org -Username ftpuser -password "FtpUserPword" -SshHostKeyFingerprint "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" | Open-WinSCPSession $searchString = ConvertTo-WinSCPEscapedString -FileMask "*.txt" Receive-WinSCPItem -WinSCPSession $session -RemoteItem "./rDir/$searchString" -LocalItem "C:\lDir\" .NOTES Useful with Send-WinSCPItem, Receive-WinSCPItem, Remove-WinSCPItem cmdlets. .LINK http://dotps1.github.io/WinSCP .LINK http://winscp.net/eng/docs/library_session_escapefilemask #> Function ConvertTo-WinSCPEscapedString { [CmdletBinding()] [OutputType([String])] Param ( [Parameter(Mandatory = $true)] [ValidateScript({ -not ([String]::IsNullOrWhiteSpace($_)) })] [String] $FileMask ) Begin { $sessionObject = New-Object -TypeName WinSCP.Session } Process { try { return ($sessionObject.EscapeFileMask($FileMask)) } catch [System.Exception] { throw $_ } } End { $sessionObject.Dispose() } } |