标签: environment-variables

PsExec 和远程环境变量、日志记录等

当我在远程计算机上运行 PsExec 时,我总是达不到我想要的效果。在大多数情况下,我想要的理想情况是 a) 管理服务器上的日志,其中每个日志都有生成它的每台远程计算机的名称(例如 COMPNAME1.log、COMPNAME2.log 等)或 b) a使用我指定的任何名称在每台远程计算机上的日志文件。

当我尝试场景 (a) 时,我使用以下命令。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username cmd /c echo TEST >> \\server.company.tld\share\%computername%.log
Run Code Online (Sandbox Code Playgroud)

问题是它永远不会奏效。所有的计算机都只是写入日志,%computername%我在办公室执行 PsExec 的计算机就在其中。我想要的是 listofcomputers.txt 中特定于每台计算机的唯一日志,这些日志将正确使用远程环境变量中的主机名而不会出现问题。这甚至可能吗?它似乎对我不起作用。我试过了,语法显然是错误的。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo TEST >> \\server.company.tld\share\%computername%.log"
Run Code Online (Sandbox Code Playgroud)

PsExec 只是失败,说找不到系统文件(阅读:语法失败)。

至于场景 (b),它似乎是类似问题的变体。当我运行这样的命令时,它不起作用。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo %computername% >> \\server.company.tld\share\aggregated.log"
Run Code Online (Sandbox Code Playgroud)

我对 cmd.exe 控制台上的 PsExec 的远程路径和环境变量有什么不了解的地方(我什至还没有尝试过可怕的 PowerShell)。我知道这样的东西在批处理文件 ( cmd /c \\server.company.tld\share\runthis.bat) 中工作,但是在将命令作为参数执行时是否有原因它不起作用?我总是需要这个,但永远无法得到它!

windows logging environment-variables pipe pstools

3
推荐指数
2
解决办法
3万
查看次数

SETX PATH 命令中的空格

假设我的路径是 C:\WINDOWS\system32\;C:\Program Files\Important\

SET NEW_PATH=C:\My\Dir\
SETX PATH "%PATH%;%NEW_PATH%"
Run Code Online (Sandbox Code Playgroud)

结果路径为:

C:\WINDOWS\system32\;C:\Program Files\Important\;C:\My\Dir"

注意路径末尾的引号。就好像 %NEW_PATH% 末尾的反斜杠逃脱了最后的引号。我需要引号,因为我的路径中有空格,但我不希望反斜杠被解释为转义字符。

在对 SETX 的调用中包含我的 PATH 的正确方法是什么?

windows-server-2003 batch-file environment-variables

3
推荐指数
1
解决办法
2910
查看次数

无法从脚本中取消设置环境变量

我正在尝试从脚本中取消设置所有环境变量。该脚本运行良好,但如果我运行 env 它仍然显示所有变量集。
如果我从 CLI 运行命令,它会起作用并且变量未设置。

unset `env | awk -F= '/^\w/ {print $1}' | xargs`
Run Code Online (Sandbox Code Playgroud)

知道如何从脚本运行它吗?
另外,知道如何从脚本中获取 /etc/profile 吗?这也行不通。

我需要设置名称相同但路径不同的变量,具体取决于我的用户需要的实例。

稍后编辑:
好的,我最终得到了这个(不是很优雅,但无论如何)解决方案:

. script 
Run Code Online (Sandbox Code Playgroud)

其中包含:

unset `env | awk -F= '/^\w/ {print $1}'|egrep -v "HOSTNAME|TERM|SHELL|HISTSIZE|SSH_CLIENT|SSH_TTY|USER|LS_COLORS|KDEDIR|MAIL|PATH|INPUTRC|PWD|LANG|HISTIGNORE|SSH_ASKPASS|TEST|SHLVL|HOME|LD_ASSUME_KERNEL|LOGNAME|SSH_CONNECTION|LESSOPEN|HISTTIMEFORMAT|G_BROKEN_FILENAMES|_"|xargs`
source env_variable_file
Run Code Online (Sandbox Code Playgroud)

谢谢!

scripting bash environment-variables source

3
推荐指数
1
解决办法
9695
查看次数

如何将命令行输出提取到变量中?

作为我为客户处理的任务的一部分,我需要对企业登录脚本进行一些修改。Windows 命令行绝对不是我的专业领域,但我对大多数它都做得很好。但是,我有一个问题,我不知道该怎么做。

基本上,我需要将机器默认网关的 IP 地址获取到环境变量中(供以后在脚本中使用)。我知道它存在于ipconfig和 of的输出中tracert,并且我知道如何在他们的输出中找到我需要的确切行,但我不知道如何超越它。

例如,以下命令会产生如下输出:

>ipconfig|Find "Default Gateway"|Findstr/N "."|Findstr/B "1:"

 1:   Default Gateway . . . . . . . . . : 199.99.9.1
Run Code Online (Sandbox Code Playgroud)

但是现在我需要以某种方式仅从该文本行中提取 IP 地址,然后将其分配给环境变量。那么,如何从 Windows 命令行执行此操作?(Windows XP 及更高版本)。

scripting windows logon-scripts command-line-interface environment-variables

3
推荐指数
1
解决办法
1万
查看次数

如何在不重启服务器的情况下“回收”IIS进程?

让 ASP.NET 查看更改PATH我已经更改了服务器上的
环境变量,并且需要 IIS / W3WP(即我的 ASP.NET 应用程序)来查看此更改。PATH我从另一个问题的答案中了解到(强调我的):

您必须回收 IIS 进程才能更新它

我的问题:如何“回收”IIS进程?

以下是我尝试解决此问题的方法:

  • 使用iisreset
    我尝试过一些东西。我尝试的第一件事是iisreset,但我的 asp.net 应用程序没有获取路径更改。为了确保我没有疯狂,我尝试重新启动服务器,这确实有效:应用程序现在拾取新的PATH.

    我很想知道是否有一种方法可以防止仅仅因为我想要PATH在 ASP.NET 应用程序中进行更改而需要重新启动整个计算机...

    可能出现的另一件事是我误解了另一个问题(那里的回答者iisreset在说“回收iis”时确实是指这个问题)?这并不能解释为什么iisreset对我的情况不起作用,而重新启动服务器却可以。iisreset我缺少什么选择吗?

  • 在互联网上搜索
    我也尝试寻找解决方案。从我第一次搜索我的PATH问题以来,没有找到任何真实的信息(除了上述问题)。我的第二组关于回收 IIS 进程的搜索效果不佳:我得到了有关iisreset以及它如何回收工作进程的信息。

  • 重新启动 W3SVC
    一位回答者建议重新启动 W3SVC(“万维网发布服务”),这似乎很有希望,但它对我也不起作用(但它可能对你有用!)。我通过更改路径尝试了该建议,使用新的命令提示符验证更改是否已完成,然后重新启动 W3SVC:我的 ASP.NET 应用程序没有骰子。重新启动后,新的命令提示符仍将显示更改后的路径,并且我的应用程序也将看到更改(因此更改本身实际上就是我想要的)。

    另一位回答者提出了类似的建议,但有一个重要的区别:让服务保持停止状态一段时间,确认该站点不可用(以查看它实际上是 IIS 为该站点提供服务)。但这对我来说有同样的结果。

  • 终止正确的 IIS 进程 …

iis environment-variables windows-server-2012

3
推荐指数
1
解决办法
6262
查看次数

如何在 Puppet Manifest 中使用变量?

我在 Centos 7.2 上使用 WSUS 模块和 Puppet Master。我的 Puppet 代理服务器运行的是 Windows Server 2012。

我想使用带有变量的清单。但是,当 Puppet Agent 服务器运行 puppet 代理时,它会显示“错误 400,语法错误”。我尝试重新编写清单和我能想到的每一个变化。我不断收到一些错误。

以下是清单的一个示例:

class excellent {
    class { 'wsus_client':
       $cool = 'Saturday'
    server_url => 'http://acme.com',
    auto_update_option  => 'Scheduled'
    scheduled_install_day => $cool,
    scheduled_install_hour => 1,
}
}
Run Code Online (Sandbox Code Playgroud)

我试过在大括号 {} 中分配变量。我尝试使用 $LOAD_PATH、--custom-dir 和 FACTERLIB。但我无法弄清楚如何使用这三个中的任何一个。

我想在一个地方更改变量并在其父类的范围内使用它。我该怎么办?

wsus environment-variables puppet puppetmaster centos7

3
推荐指数
1
解决办法
6288
查看次数

将多个环境变量传递给一个由主管管理的进程

我需要将多个环境变量代理/etc/environment到由supervisor.

以下配置对我有用,supervisor 3.0r1-1supervisor 3.2.0-2报告错误:

environment=FOO=$FOO,BAR=$BAR,BAZ=$BAZ
Run Code Online (Sandbox Code Playgroud)

错误:值中的键/值对意外结束...

一些答案建议引用这些值,但如果我这样做,变量将不会扩展为实际值。

我究竟做错了什么?如何解决?

environment-variables supervisord

3
推荐指数
1
解决办法
6417
查看次数

PowerShell:格式化和排序环境变量

使用 PowerShell,我可以获得所有(当前进程)环境变量并对其进行格式化和排序:

gci env: | %{"{0}={1}" -f $_.Name,$_.Value} | sort
Run Code Online (Sandbox Code Playgroud)

这使:

a=foo
b=bar
c=baz
Run Code Online (Sandbox Code Playgroud)

但这给出了所有流程变量,我只想要用户变量,所以我这样做:

[Environment]::GetEnvironmentVariables("User") | %{"{0}={1}" -f $_.Name,$_.Value} | sort
Run Code Online (Sandbox Code Playgroud)

但这仅输出:

=
Run Code Online (Sandbox Code Playgroud)

[Environment]::GetEnvironmentVariables("User")作品的东西之后是问题。

windows powershell environment-variables

3
推荐指数
1
解决办法
470
查看次数

将 IfDefine 与环境变量结合使用

/etc/sysconfig我试图通过使用变量列表并在使用 systemd 嵌入式配置文件启动 Apache 时加载环境变量,使我的配置尽可能灵活且易于配置。由于环境变量在服务器启动后不会改变,因此我想通过使用 Apache 的IfDefine指令而不是常规If指令来提高性能和灵活性。

常规指令的问题之一<If>... </If>是块内的指令即使没有被执行也总是被计算。如果您使用环境变量作为参数,这一点非常重要,如下所示:

SVNParentPath ${MY_SVN_REPOSITORIES_PATH}
Run Code Online (Sandbox Code Playgroud)

${MY_SVN_REPOSITORIES_PATH}在这种情况下,如果计算结果为空字符串,Apache 将抛出错误并拒绝启动。我想在系统环境变量MY_SVN_REPOSITORIES_PATH为空或未设置时禁用服务存储库。我该怎么做呢?

environment-variables apache-2.4 apache2

3
推荐指数
1
解决办法
4533
查看次数

在 linux 上的脚本中使用 HOSTNAME 和 CURRENT_USER

假设我想编辑/etc/profile

PYTHONPATH = /home/CURRENT_USER/

  1. 我如何有一个会自动填充当前用户的变量
  2. 什么主机名
  3. 这些不是环境变量吗?

linux unix environment-variables

2
推荐指数
1
解决办法
1万
查看次数