-
Notifications
You must be signed in to change notification settings - Fork 0
/
ftp.psm1
98 lines (79 loc) · 2.7 KB
/
ftp.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
function Get-FtpChildItem {
param(
[Parameter(Mandatory=$true)]
[string]
$sourceuri,
[Parameter(Mandatory=$true)]
[string]
$username,
[Parameter(Mandatory=$true)]
[string]
$password
)
$ftprequest = [System.Net.FtpWebRequest]::Create($sourceuri);
$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectoryDetails;
$ftprequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$ftpresponse = $ftprequest.GetResponse();
$ftpresponseStream = $ftpresponse.GetResponseStream();
$reader = new-object IO.StreamReader $ftpresponseStream
$reader.ReadToEnd()
Write-Host "Directory List Complete, status " $ftpresponse.StatusDescription
$reader.Close()
$ftpresponse.Close()
}
function Upload-FtpFile {
param(
[Parameter(Mandatory=$true)]
[string]
$sourceuri,
[Parameter(Mandatory=$true)]
[string]
$username,
[Parameter(Mandatory=$true)]
[string]
$password,
[Parameter(Mandatory=$true)]
[string]
$path
)
if ($sourceUri -match '\\$|\\\w+$') { throw 'sourceuri should end with a file name' }
$ftprequest = [System.Net.FtpWebRequest]::Create($sourceuri);
$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile;
$ftprequest.UseBinary = $true
$ftprequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
#$sourceStream = new-object IO.StreamReader $path
#$fileContents = [Text.Encoding]::UTF8.GetBytes($sourceStream.ReadToEnd());
#$sourceStream.Close();
$fileContents = Get-Content $path -encoding byte
$ftprequest.ContentLength = $fileContents.Length;
$requestStream = $ftprequest.GetRequestStream();
$requestStream.Write($fileContents, 0, $fileContents.Length);
$requestStream.Close();
$response = $ftprequest.GetResponse();
Write-Host Upload File Complete, status $response.StatusDescription
$response.Close();
}
function Create-FtpDirectory {
param(
[Parameter(Mandatory=$true)]
[string]
$sourceuri,
[Parameter(Mandatory=$true)]
[string]
$username,
[Parameter(Mandatory=$true)]
[string]
$password
)
if ($sourceUri -match '\\$|\\\w+$') { throw 'sourceuri should end with a file name' }
$ftprequest = [System.Net.FtpWebRequest]::Create($sourceuri);
$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::MakeDirectory
$ftprequest.UseBinary = $true
$ftprequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$response = $ftprequest.GetResponse();
Write-Host Upload File Complete, status $response.StatusDescription
$response.Close();
}
export-modulemember Get-FtpChildItem
export-modulemember Upload-FtpFile
export-modulemember Create-FtpDirectory