Skip to content

Commit 7398e15

Browse files
authored
Merge pull request #182 from onikolaiev/develop
Wiki updates
2 parents 2e947e9 + 8f7c36a commit 7398e15

7 files changed

Lines changed: 416 additions & 5 deletions

fscps.tools/changelog.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Changelog
2-
## 1.0.0 (2024-03-27)
3-
- New: Some Stuff
4-
- Upd: Moar Stuff
5-
- Fix: Much Stuff
2+
## 1.1.0 (2026-02-23)
3+
- New: Get-FSCPSNuget now supports `-KnownVersion` and `-KnownType` parameters to resolve NuGet versions from short FNO versions (e.g. `10.0.45`) with GA/Latest strategy
4+
- New: Added `VersionStrategy` enum (GA, Latest)
5+
- Fix: Fixed Cyrillic character in variable names in `Invoke-CloudRuntimeAssembliesImport` that caused parse errors
6+
- Upd: Get-FSCPSNuget now automatically creates the destination path if it does not exist
7+

wiki/How-To-Download-FSC-NuGets.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ Import-Module -Name fscps.tools
2020

2121
[[images/tutorials/Import-Module-Administrator.gif]]
2222

23-
## **Download NuGets**
23+
## **Download NuGets using exact version**
2424

25+
If you already know the exact NuGet version (e.g. `10.0.1777.99`), you can download packages directly:
2526

2627
```
2728
$DynamicsVersion = "10.0.39"
@@ -40,5 +41,31 @@ Get-ChildItem $PackagesDirectory
4041

4142
[[images/howto/How-To-Download-FSC-NuGets.gif]]
4243

44+
## **Download NuGets using FNO version (KnownVersion)**
45+
46+
You can also use the short FNO version (e.g. `10.0.45`) and let the cmdlet automatically resolve the correct NuGet version. Use the `-KnownType` parameter to choose between `GA` (General Availability) and `Latest` versions.
47+
48+
```
49+
$DynamicsVersion = "10.0.45"
50+
$PackagesDirectory = "C:\Temp\NuGets\$DynamicsVersion"
51+
52+
# Download all NuGet packages for the GA version
53+
Get-FSCPSNuget -KnownVersion $DynamicsVersion -KnownType GA -Type PlatformCompilerPackage -Path $PackagesDirectory -Force
54+
Get-FSCPSNuget -KnownVersion $DynamicsVersion -KnownType GA -Type PlatformDevALM -Path $PackagesDirectory -Force
55+
Get-FSCPSNuget -KnownVersion $DynamicsVersion -KnownType GA -Type ApplicationDevALM -Path $PackagesDirectory -Force
56+
Get-FSCPSNuget -KnownVersion $DynamicsVersion -KnownType GA -Type ApplicationSuiteDevALM -Path $PackagesDirectory -Force
57+
Get-ChildItem $PackagesDirectory
58+
```
59+
60+
To download the **Latest** available version instead of GA:
61+
62+
```
63+
Get-FSCPSNuget -KnownVersion "10.0.45" -KnownType Latest -Type PlatformCompilerPackage -Path "C:\Temp\NuGets" -Force
64+
```
65+
66+
> **Note:** The `-KnownType` parameter accepts two values:
67+
> - `GA` — resolves to the General Availability (stable) NuGet version
68+
> - `Latest` — resolves to the latest available NuGet version
69+
4370
## **Closing comments**
4471
In this tutorial we showed you how to download D365FSC nuget packages.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
This tutorial will show you how to download D365FSC system update packages (service updates, previews, quality updates) using fscps.tools.
2+
3+
## **Prerequisites**
4+
* PowerShell 5.1
5+
* fscps.tools module installed
6+
* Azure Storage Account configured with the update packages (see [[Work with Azure Storage Account]])
7+
8+
Please visit the [Install as a Administrator](https://github.com/fscpscollaborative/fscps.tools/wiki/Tutorial-Install-Administrator) or the [Install as a non-Administrator](https://github.com/fscpscollaborative/fscps.tools/wiki/Tutorial-Install-Non-Administrator) tutorials to learn how to install the tools.
9+
10+
## **Import module**
11+
12+
```
13+
Import-Module -Name fscps.tools
14+
```
15+
16+
## **Understanding update types**
17+
18+
The `Get-FSCPSSystemUpdatePackage` cmdlet supports the following update types:
19+
20+
| UpdateType | Description |
21+
| :-- | :-- |
22+
| **SystemUpdate** | The GA (General Availability) service update package |
23+
| **Preview** | The preview version of a service update |
24+
| **FinalQualityUpdate** | The final quality update for a version |
25+
| **ProactiveQualityUpdate** | A proactive quality update |
26+
27+
## **Download a system update package**
28+
29+
### **Download the GA service update**
30+
31+
```
32+
Get-FSCPSSystemUpdatePackage `
33+
-UpdateType SystemUpdate `
34+
-D365FSCVersion "10.0.40" `
35+
-OutputPath "C:\Packages\"
36+
```
37+
38+
This will download the service update package for version 10.0.40 and save it to `C:\Packages\`.
39+
40+
### **Download a preview version**
41+
42+
```
43+
Get-FSCPSSystemUpdatePackage `
44+
-UpdateType Preview `
45+
-D365FSCVersion "10.0.41" `
46+
-OutputPath "C:\Packages\"
47+
```
48+
49+
### **Download a final quality update**
50+
51+
```
52+
Get-FSCPSSystemUpdatePackage `
53+
-UpdateType FinalQualityUpdate `
54+
-D365FSCVersion "10.0.40" `
55+
-OutputPath "C:\Packages\"
56+
```
57+
58+
### **Force re-download**
59+
60+
If the package already exists locally, use `-Force` to re-download:
61+
62+
```
63+
Get-FSCPSSystemUpdatePackage `
64+
-UpdateType SystemUpdate `
65+
-D365FSCVersion "10.0.40" `
66+
-OutputPath "C:\Packages\" `
67+
-Force
68+
```
69+
70+
### **Use a custom storage config**
71+
72+
By default the cmdlet uses the `PackageStorage` storage account configuration. You can specify a different one:
73+
74+
```
75+
Get-FSCPSSystemUpdatePackage `
76+
-UpdateType SystemUpdate `
77+
-D365FSCVersion "10.0.40" `
78+
-OutputPath "C:\Packages\" `
79+
-StorageAccountConfig "MyCustomStorage"
80+
```
81+
82+
## **Closing comments**
83+
In this tutorial we showed you how to use `Get-FSCPSSystemUpdatePackage` to download different types of D365FSC update packages. Make sure your Azure Storage Account is configured with the correct packages before using this cmdlet (see [[Work with Azure Storage Account]]).

wiki/How-To-Sign-Files.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
This tutorial will show you how to sign D365FSC deployable packages and other files using code signing certificates.
2+
3+
## **Prerequisites**
4+
* PowerShell 5.1
5+
* fscps.tools module installed
6+
* A valid code signing certificate (DigiCert or Azure KeyVault)
7+
8+
Please visit the [Install as a Administrator](https://github.com/fscpscollaborative/fscps.tools/wiki/Tutorial-Install-Administrator) or the [Install as a non-Administrator](https://github.com/fscpscollaborative/fscps.tools/wiki/Tutorial-Install-Non-Administrator) tutorials to learn how to install the tools.
9+
10+
## **Start PowerShell**
11+
Locate the PowerShell icon, if you don't have it on your desktop or in the task pane, we can locate it in the Windows Start Menu. Search for it or type PowerShell.
12+
13+
[[images/tutorials/First-Time-Start-PowerShell-Non-Administrator.gif]]
14+
15+
## **Import module**
16+
You need to import / load the fscps.tools module into the current PowerShell console. Type the following command:
17+
18+
```
19+
Import-Module -Name fscps.tools
20+
```
21+
22+
## **Sign files with DigiCert**
23+
24+
If you have a DigiCert code signing certificate, you can use the `Invoke-FSCPSDigiCertSignFile` cmdlet.
25+
26+
You will need:
27+
* **SM_API_KEY** — your DigiCert API key
28+
* **SM_CLIENT_CERT_FILE_URL** or **SM_CLIENT_CERT_FILE** — URL or local path to the `.p12` certificate file
29+
* **SM_CLIENT_CERT_PASSWORD** — the certificate password (as SecureString)
30+
* **SM_CODE_SIGNING_CERT_SHA1_HASH** — the certificate thumbprint (fingerprint)
31+
32+
```
33+
$certPassword = ConvertTo-SecureString "YourPassword" -AsPlainText -Force
34+
35+
Invoke-FSCPSDigiCertSignFile `
36+
-SM_API_KEY "your-api-key" `
37+
-SM_CLIENT_CERT_FILE "c:\certs\digicert.p12" `
38+
-SM_CLIENT_CERT_PASSWORD $certPassword `
39+
-SM_CODE_SIGNING_CERT_SHA1_HASH "your-cert-thumbprint" `
40+
-FILE "c:\packages\MyPackage.zip"
41+
```
42+
43+
If you have the certificate hosted remotely, use `-SM_CLIENT_CERT_FILE_URL` instead of `-SM_CLIENT_CERT_FILE`:
44+
45+
```
46+
Invoke-FSCPSDigiCertSignFile `
47+
-SM_API_KEY "your-api-key" `
48+
-SM_CLIENT_CERT_FILE_URL "https://your-storage/digicert.p12" `
49+
-SM_CLIENT_CERT_PASSWORD $certPassword `
50+
-SM_CODE_SIGNING_CERT_SHA1_HASH "your-cert-thumbprint" `
51+
-FILE "c:\packages\MyPackage.zip"
52+
```
53+
54+
## **Sign files with Azure KeyVault**
55+
56+
If you store your signing certificate in Azure KeyVault, use the `Invoke-FSCPSAzureSignToolSignFile` cmdlet.
57+
58+
You will need:
59+
* **Uri** — the KeyVault URL (e.g. `https://my-vault.vault.azure.net`)
60+
* **TenantId** — your Azure AD tenant ID
61+
* **CertificateName** — the name of the certificate in KeyVault
62+
* **ClientId** — the Azure AD application (service principal) client ID
63+
* **ClientSecret** — the client secret (as SecureString)
64+
65+
```
66+
$clientSecret = ConvertTo-SecureString "your-client-secret" -AsPlainText -Force
67+
68+
Invoke-FSCPSAzureSignToolSignFile `
69+
-Uri "https://my-vault.vault.azure.net" `
70+
-TenantId "01234567-abcd-ef01-0000-0123456789ab" `
71+
-CertificateName "my-signing-cert" `
72+
-ClientId "01234567-abcd-ef01-0000-0123456789ab" `
73+
-ClientSecret $clientSecret `
74+
-FILE "c:\packages\MyPackage.zip"
75+
```
76+
77+
## **Closing comments**
78+
In this tutorial we showed you two ways to sign files:
79+
- **DigiCert** — using `Invoke-FSCPSDigiCertSignFile` for DigiCert-hosted certificates
80+
- **Azure KeyVault** — using `Invoke-FSCPSAzureSignToolSignFile` for certificates stored in Azure KeyVault
81+
82+
Both approaches are suitable for signing deployable packages, DLLs, and other artifacts in your CI/CD pipeline.
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
This tutorial will show you how to work with Azure DevOps (ADO) test cases and test suites using fscps.tools.
2+
3+
## **Prerequisites**
4+
* PowerShell 5.1
5+
* fscps.tools module installed
6+
* Access to an Azure DevOps project with Test Plans
7+
* A valid Azure DevOps Personal Access Token (PAT) with test management permissions
8+
9+
Please visit the [Install as a Administrator](https://github.com/fscpscollaborative/fscps.tools/wiki/Tutorial-Install-Administrator) or the [Install as a non-Administrator](https://github.com/fscpscollaborative/fscps.tools/wiki/Tutorial-Install-Non-Administrator) tutorials to learn how to install the tools.
10+
11+
## **Import module**
12+
13+
```
14+
Import-Module -Name fscps.tools
15+
```
16+
17+
## **Prepare authentication**
18+
19+
All ADO cmdlets require a `-Token` parameter. Use a Bearer token with your PAT:
20+
21+
```
22+
$pat = "your-personal-access-token"
23+
$token = "Bearer " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
24+
$organization = "my-org"
25+
$project = "my-project"
26+
```
27+
28+
## **Available cmdlets**
29+
30+
| Cmdlet | Description |
31+
| :-- | :-- |
32+
| `Get-FSCPSADOTestCase` | Get details of a specific test case by ID |
33+
| `Get-FSCPSADOTestSuitesByTestPlan` | List all test suites in a test plan |
34+
| `Get-FSCPSADOTestCasesBySuite` | List all test cases in a test suite |
35+
| `Get-FSCPSADOTestSuiteByTestCase` | Find which test suite a test case belongs to |
36+
37+
## **Get test case details**
38+
39+
Retrieve detailed information about a specific test case:
40+
41+
```
42+
Get-FSCPSADOTestCase `
43+
-TestCaseId 1234 `
44+
-Project $project `
45+
-Organization $organization `
46+
-Token $token
47+
```
48+
49+
## **List test suites in a test plan**
50+
51+
Get all test suites from a specific test plan:
52+
53+
```
54+
$suites = Get-FSCPSADOTestSuitesByTestPlan `
55+
-Organization $organization `
56+
-Project $project `
57+
-TestPlanId 100 `
58+
-Token $token
59+
60+
$suites | ForEach-Object {
61+
Write-Host "Suite: $($_.name) (ID: $($_.id))"
62+
}
63+
```
64+
65+
## **List test cases in a test suite**
66+
67+
Get all test cases from a specific test suite within a test plan:
68+
69+
```
70+
$testCases = Get-FSCPSADOTestCasesBySuite `
71+
-TestSuiteId 1001 `
72+
-TestPlanId 100 `
73+
-Organization $organization `
74+
-Project $project `
75+
-Token $token
76+
77+
$testCases | ForEach-Object {
78+
Write-Host "Test Case: $($_.testCase.name) (ID: $($_.testCase.id))"
79+
}
80+
```
81+
82+
## **Find test suite by test case**
83+
84+
Find which test suite a specific test case belongs to:
85+
86+
```
87+
Get-FSCPSADOTestSuiteByTestCase `
88+
-TestCaseId 1234 `
89+
-Project $project `
90+
-Organization $organization `
91+
-Token $token
92+
```
93+
94+
## **Example: Export all test cases from a test plan**
95+
96+
A practical example that lists all test cases across all suites in a test plan:
97+
98+
```
99+
$testPlanId = 100
100+
101+
# Get all suites in the test plan
102+
$suites = Get-FSCPSADOTestSuitesByTestPlan `
103+
-Organization $organization `
104+
-Project $project `
105+
-TestPlanId $testPlanId `
106+
-Token $token
107+
108+
foreach ($suite in $suites) {
109+
Write-Host "=== Suite: $($suite.name) (ID: $($suite.id)) ==="
110+
111+
$testCases = Get-FSCPSADOTestCasesBySuite `
112+
-TestSuiteId $suite.id `
113+
-TestPlanId $testPlanId `
114+
-Organization $organization `
115+
-Project $project `
116+
-Token $token
117+
118+
foreach ($tc in $testCases) {
119+
Write-Host " - $($tc.testCase.name) (ID: $($tc.testCase.id))"
120+
}
121+
}
122+
```
123+
124+
## **Closing comments**
125+
In this tutorial we showed you how to use the ADO test management cmdlets:
126+
- **Get-FSCPSADOTestCase** — get details of a test case
127+
- **Get-FSCPSADOTestSuitesByTestPlan** — list suites in a test plan
128+
- **Get-FSCPSADOTestCasesBySuite** — list test cases in a suite
129+
- **Get-FSCPSADOTestSuiteByTestCase** — find which suite a test case belongs to
130+
131+
These cmdlets are useful for test management automation, reporting, and integration with CI/CD pipelines.

0 commit comments

Comments
 (0)