Skip to content

Commit 6d71043

Browse files
Fix local vs remote WMI access patterns in CCMClientInfoService and package naming
Co-authored-by: CodyMathis123 <[email protected]>
1 parent 152751e commit 6d71043

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

.github/workflows/dotnet-package.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
uses: actions/upload-artifact@v4
6464
with:
6565
name: nuget-package-${{ steps.version.outputs.version }}
66-
path: ./artifacts/*.nupkg
66+
path: ./artifacts/
6767

6868
publish-to-assets:
6969
needs: build
@@ -78,6 +78,7 @@ jobs:
7878
uses: actions/download-artifact@v4
7979
with:
8080
name: nuget-package-${{ needs.build.outputs.package-version }}
81+
path: ./artifacts/
8182
path: ./artifacts
8283

8384
- name: Create Release

src/PSCCMClient.Core/Services/CCMClientInfoService.cs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ public CCMClientInfoService(string computerName)
1515
_computerName = computerName ?? ".";
1616
}
1717

18+
/// <summary>
19+
/// Helper method to get the correct namespace path for local or remote operations
20+
/// </summary>
21+
private string GetNamespacePath(string baseNamespace)
22+
{
23+
bool isLocal = _computerName == "." || _computerName.Equals(Environment.MachineName, StringComparison.OrdinalIgnoreCase);
24+
return isLocal ? baseNamespace : $@"\\{_computerName}\{baseNamespace}";
25+
}
26+
1827
/// <summary>
1928
/// Gets comprehensive client information
2029
/// </summary>
@@ -133,7 +142,7 @@ public string GetClientVersion()
133142
try
134143
{
135144
// Use query like PowerShell: 'SELECT ClientVersion FROM SMS_Client'
136-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\CCM", "SELECT ClientVersion FROM SMS_Client");
145+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\CCM"), "SELECT ClientVersion FROM SMS_Client");
137146
using var results = searcher.Get();
138147

139148
foreach (ManagementObject obj in results)
@@ -204,7 +213,7 @@ public string GetPrimaryUser()
204213
{
205214
try
206215
{
207-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\CCM\CIModels", "SELECT User FROM CCM_PrimaryUser");
216+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\CCM\\CIModels"), "SELECT User FROM CCM_PrimaryUser");
208217
using var results = searcher.Get();
209218

210219
foreach (ManagementObject obj in results)
@@ -238,7 +247,7 @@ public string GetPrimaryUser()
238247
try
239248
{
240249
// First get the CCMExec service process ID
241-
using var serviceSearcher = new ManagementObjectSearcher($@"\\{_computerName}\root\cimv2", "SELECT ProcessID FROM Win32_Service WHERE Name = 'CCMExec'");
250+
using var serviceSearcher = new ManagementObjectSearcher(GetNamespacePath("root\\cimv2"), "SELECT ProcessID FROM Win32_Service WHERE Name = 'CCMExec'");
242251
using var serviceResults = serviceSearcher.Get();
243252

244253
foreach (ManagementObject serviceObj in serviceResults)
@@ -247,7 +256,7 @@ public string GetPrimaryUser()
247256
if (!string.IsNullOrEmpty(processId))
248257
{
249258
// Now get the process creation date
250-
using var processSearcher = new ManagementObjectSearcher($@"\\{_computerName}\root\cimv2", $"SELECT CreationDate FROM Win32_Process WHERE ProcessID = '{processId}'");
259+
using var processSearcher = new ManagementObjectSearcher(GetNamespacePath("root\\cimv2"), $"SELECT CreationDate FROM Win32_Process WHERE ProcessID = '{processId}'");
251260
using var processResults = processSearcher.Get();
252261

253262
foreach (ManagementObject processObj in processResults)
@@ -294,7 +303,7 @@ private string GetSiteCode()
294303
}
295304

296305
// Fallback to WMI approach
297-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\CCM", "SELECT * FROM CCM_Client");
306+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\CCM"), "SELECT * FROM CCM_Client");
298307
using var results = searcher.Get();
299308

300309
foreach (ManagementObject obj in results)
@@ -311,7 +320,7 @@ private string GetCurrentManagementPoint()
311320
try
312321
{
313322
// Use query like PowerShell: 'SELECT CurrentManagementPoint FROM SMS_Authority'
314-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\CCM", "SELECT CurrentManagementPoint FROM SMS_Authority");
323+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\CCM"), "SELECT CurrentManagementPoint FROM SMS_Authority");
315324
using var results = searcher.Get();
316325

317326
foreach (ManagementObject obj in results)
@@ -328,7 +337,7 @@ private string GetCurrentSoftwareUpdatePoint()
328337
try
329338
{
330339
// Use query like PowerShell: 'SELECT ContentLocation FROM CCM_UpdateSource'
331-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\ccm\SoftwareUpdates\WUAHandler", "SELECT ContentLocation FROM CCM_UpdateSource");
340+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\ccm\\SoftwareUpdates\\WUAHandler"), "SELECT ContentLocation FROM CCM_UpdateSource");
332341
using var results = searcher.Get();
333342

334343
foreach (ManagementObject obj in results)
@@ -344,7 +353,7 @@ private string GetCurrentSoftwareUpdatePoint()
344353
{
345354
try
346355
{
347-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\CCM\SoftMgmtAgent", "SELECT * FROM CacheConfig");
356+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\CCM\\SoftMgmtAgent"), "SELECT * FROM CacheConfig");
348357
using var results = searcher.Get();
349358

350359
foreach (ManagementObject obj in results)
@@ -484,7 +493,7 @@ private string GetDNSSuffix()
484493
try
485494
{
486495
// Use correct namespace like PowerShell: 'root\ccm\policy\machine\actualconfig'
487-
using var searcher = new ManagementObjectSearcher($@"\\{_computerName}\root\ccm\policy\machine\actualconfig", "SELECT * FROM CCM_Logging_GlobalConfiguration");
496+
using var searcher = new ManagementObjectSearcher(GetNamespacePath("root\\ccm\\policy\\machine\\actualconfig"), "SELECT * FROM CCM_Logging_GlobalConfiguration");
488497
using var results = searcher.Get();
489498

490499
foreach (ManagementObject obj in results)

0 commit comments

Comments
 (0)