Skip to content

Commit

Permalink
Added PSVersion property to AppInsights
Browse files Browse the repository at this point in the history
  • Loading branch information
erwinvanhunen committed Jan 13, 2023
1 parent a62ba92 commit 1c6c787
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 6 deletions.
5 changes: 3 additions & 2 deletions src/ALC/ApplicationInsights.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class ApplicationInsights
/// <param name="initializationType">Information on what method has been used to establish a connection</param>
/// <param name="assemblyVersion">The PnP PowerShell version in use</param>
/// <param name="operatingSystem">The operating system on which PnP PowerShell is being used</param>
public void Initialize(string serverLibraryVersion, string serverVersion, string initializationType, string assemblyVersion, string operatingSystem)
public void Initialize(string serverLibraryVersion, string serverVersion, string initializationType, string assemblyVersion, string operatingSystem, string psVersion = "")
{
// Retrieve an instance of the telemetry client to use
_telemetryClient = TelemetryClientFactory.GetTelemetryClient();
Expand All @@ -41,7 +41,8 @@ public void Initialize(string serverLibraryVersion, string serverVersion, string
{ "ConnectionMethod", initializationType.ToString() }, // Information on what method has been used to establish a connection
{ "Version", assemblyVersion }, // The PnP PowerShell version in use
{ "Platform", "SPO" }, // Platform to which the connection has been made
{ "OperatingSystem", operatingSystem} // The operating system on which PnP PowerShell is being used
{ "OperatingSystem", operatingSystem}, // The operating system on which PnP PowerShell is being used
{ "PSVersion", psVersion}
};
}
}
Expand Down
35 changes: 32 additions & 3 deletions src/Commands/Base/PnPConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ internal static PnPConnection CreateWithACSAppOnly(Uri url, string realm, string
{
realm = GetRealmFromTargetUrl(url);

if(realm == null)
if (realm == null)
{
throw new Exception($"Could not determine realm for the target site '{url}'. Please validate that a site exists at this URL.");
}
Expand Down Expand Up @@ -355,7 +355,7 @@ internal static PnPConnection CreateWithManagedIdentity(Cmdlet cmdlet, string ur
var defaultResource = $"{resourceUri.Scheme}://{resourceUri.Authority}";
cmdlet.WriteVerbose("Acquiring token for resource " + defaultResource);
var accessToken = TokenHandler.GetManagedIdentityTokenAsync(cmdlet, httpClient, defaultResource, userAssignedManagedIdentityObjectId).GetAwaiter().GetResult();

using (var authManager = new PnP.Framework.AuthenticationManager(new System.Net.NetworkCredential("", accessToken).SecurePassword))
{
PnPClientContext context = null;
Expand Down Expand Up @@ -751,11 +751,40 @@ internal void InitializeTelemetry(ClientContext context, InitializationType init
var coreAssembly = Assembly.GetExecutingAssembly();
var operatingSystem = Utilities.OperatingSystem.GetOSString();

ApplicationInsights.Initialize(serverLibraryVersion, serverVersion, initializationType.ToString(), ((AssemblyFileVersionAttribute)coreAssembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute))).Version.ToString(), operatingSystem);
ApplicationInsights.Initialize(serverLibraryVersion, serverVersion, initializationType.ToString(), ((AssemblyFileVersionAttribute)coreAssembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute))).Version.ToString(), operatingSystem, PSVersion);
ApplicationInsights.TrackEvent("Connect-PnPOnline");
}
}

private static string PSVersion => (PSVersionLazy.Value);

private static readonly Lazy<string> PSVersionLazy = new Lazy<string>(
() =>
{
var caller = AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(a => a.GetName().Name == "System.Management.Automation");
//var caller = Assembly.GetCallingAssembly();
var psVersionType = caller.GetType("System.Management.Automation.PSVersionInfo");
if (null != psVersionType)
{
PropertyInfo propInfo = psVersionType.GetProperty("PSVersion");
if (null == propInfo)
{
propInfo = psVersionType.GetProperty("PSVersion", BindingFlags.NonPublic | BindingFlags.Static);
}
var getter = propInfo.GetGetMethod(true);
var version = getter.Invoke(null, new object[] { });
if (null != version)
{
var versionType = version.GetType();
var versionProperty = versionType.GetProperty("Major");
return ((int)versionProperty.GetValue(version)).ToString();
}
}
return "";
});

private static string PnPPSVersionTag => (PnPPSVersionTagLazy.Value);

private static readonly Lazy<string> PnPPSVersionTagLazy = new Lazy<string>(
Expand Down
2 changes: 1 addition & 1 deletion src/Commands/Base/PnPPowerShellModuleInitializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace PnP.PowerShell.Commands.Base
{
public class PnPPowerShellModuleInitializer : IModuleAssemblyInitializer
{
private static string s_binBasePath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),".."));
private static string s_binBasePath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), ".."));

private static string s_binCommonPath = Path.Combine(s_binBasePath, "Common");

Expand Down

0 comments on commit 1c6c787

Please sign in to comment.