当前位置: 首页 > 知识库问答 >
问题:

如何重新创建PowerShell$配置文件变量?它在自定义主机中为空

邢博涛
2023-03-14

如果使用System实现自定义PowerShell主机。管理。Automation(SMA),所有的自动变量都是可用的,除了$PROFILE似乎是空的。人们如何着手重建它?

它是否始终位于UserProfile\Documents\WindowsPowerShell\Microsoft中。PowerShell\u配置文件。ps1?还是我需要担心它在其他地方?

为了澄清,我只关心货币用户货币主机配置文件。

给定此PowerShell脚本:

Write-Output "_Profiles_" 
Write-Output "CurrentUserCurrentHost = '$($Profile.CurrentUserCurrentHost)'"
Write-Output "CurrentUserAllHosts = '$($Profile.CurrentUserAllHosts)'"
Write-Output "AllUsersCurrentHost = '$($Profile.AllUsersCurrentHost)'"
Write-Output "AllUsersAllHosts = '$($Profile.AllUsersAllHosts)'"

在system PowerShell上运行它具有以下输出:

_Profiles_
CurrentUserCurrentHost = 'C:\Users\rob\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'
CurrentUserAllHosts = 'C:\User\rob\Documents\WindowsPowerShell\profile.ps1'
AllUsersCurrentHost = 'C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1'
AllUsersAllHosts = 'C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1'

使用定制的C#PowerShell主机(一个System.Management.Automation.Host.PSHost实现)运行它会显示:

_Profiles_
CurrentUserCurrentHost = ''
CurrentUserAllHosts = ''
AllUsersCurrentHost = ''
AllUsersAllHosts = ''

https://github.com/chocolatey/choco/issues/667

这已经在PowerShell v3/系统中进行了测试。管理。自动化(SMA)v3,但它很容易在其他PowerShell版本中得到验证。

共有1个答案

咸臻
2023-03-14

作为一个可能的解决方案,这是我想出的。然而,这确实意味着$file总是应该在Documents文件夹中。

var documentsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments, Environment.SpecialFolderOption.DoNotVerify);
var currentUserCurrentHostProfile = _fileSystem.combine_paths(documentsFolder, "WindowsPowerShell\\Microsoft.PowerShell_profile.ps1");

var profileFix = @"
if ((Test-Path(""{0}"")) -and ($profile -eq $null -or $profile -eq '')) {{
  $global:profile = ""{1}""
}}
".format_with(documentsFolder, currentUserCurrentHostProfile);

pipeline.Commands.Add(new Command(profileFix, isScript: true, useLocalScope: false));

这样做是因为像LocalSystem这样的特殊帐户没有配置文件文件夹。

注意:。format_with是一个字符串格式化程序,因此您看到的{{}在完成字符串格式化后将转换为{}

 类似资料:
  • 问题内容: 我正在将我的一个应用程序从Express转换为sails.js-是否可以在Sails中执行类似的操作? 从我在Express中的文件中: 这使我可以在每个视图上访问这些变量,而不必将其硬编码到模板中。虽然不确定在Sails中如何/在哪里进行。 问题答案: 您可以在文件夹中创建自己的配置文件。例如,使用您的配置变量: 然后通过全局变量从任何视图访问这些变量。 在视图中: 在服务 在模型中

  • 我正在Eclipse中使用Spring Boot应用程序(maven项目)。当我运行maven项目的test clean target时,我希望加载活动概要文件 我已经在application.properties和application-test.properties中添加了属性spring.profiles.active=test,aop,这没有任何影响。

  • 我想知道如何在centos apache配置中设置变量,用户将以以下身份登录:www.example。com/$1($1是一个变量)ServerName localhost ServerAdminwebmaster@example.orgDocumentRoot/var/www/html 别名/1美元 /home/client/1美元选项索引关注符号链接DAV On AllowOverRide A

  • 我有个小问题。 我创建了自定义gradle插件(独立插件),并将它从mavenlocal包含在我的简单项目中。它正在工作,但我不知道如何在我的插件中设置系统属性。更多细节:在我的插件中,在任务中,我想设置系统属性(system.setproperty(key,value))并从我的主应用程序中获取它的属性,例如在main类main方法中,但main方法不使用此属性 当我在构建中创建任务时。grad

  • 本文向大家介绍在更新MongoDB文档时如何使用自定义变量,包括了在更新MongoDB文档时如何使用自定义变量的使用技巧和注意事项,需要的朋友参考一下 要更新,请使用update(),以下是创建和使用示例自定义变量的语法- 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在更新MongoDB文档时使用自定义变量的查询- 在find()方法

  • 可能重复: Java中的动态变量名: 假设我有一个字符串,如下所示。 现在,我想创建一个字符串,但是字符串的变量将被称为“Hello”。为了使字符串名为“Hello”,我必须访问string以获取名称“Hello”,这样我就可以将其用作变量名。下面是我想看的。 感谢您的努力,请尝试向我解释,因为我是Java初学者D