小编bea*_*ker的帖子

如何在PowerShell中安排用户登录的任务?

我有一个问题,关于如何使计划任务运行无论用户是否登录.必须在powershell中完成.我所做的是:

$WINDIR/system32/schtasks.exe /create /tn TaskName /sc daily /st 15:05:00 /tr "C:\cygwin\opt\IBM\tpchc\bin\tools\TheFileToRun.bat"
Run Code Online (Sandbox Code Playgroud)

但是,无论用户是登录还是关闭,我都能提供额外的参数来使这个任务运行吗?

如果它不能在Powershell中完成,那么可以用另一种脚本语言来完成吗?

谢谢 :)

shell powershell logged

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

在完成时从 Azure Devops Build Pipeline 设置 Git 标签

我正在尝试使用由 GitVersion 在成功构建结束时的 GIT 提交确定的当前版本号设置标签。感觉我不能成为第一个这样做的人,但我正在努力寻找有用的东西。

Azure Devops Pipeline 在成功时获取源以“标记源”中有一项功能。我已经设置了它并设置为由我拥有的代理任务之一设置的变量(GitVersion)

标签来源

我可以在调试日志中看到这个变量是由我添加到管道的 GitVersion 组件设置的。

2019-12-06T20:54:20.2390794Z ##[debug]Processed: ##vso[task.setvariable variable=GitVersion.MajorMinorPatch;]2.98.0
Run Code Online (Sandbox Code Playgroud)

但是,如果我就这样保留它,我会得到一个创建为“v$(GitVersion.MajorMinorPatch)”的标记,这意味着在创建标记时该变量不再存在。

标签格式帮助工具提示说

“标签格式可以是用户定义或预定义变量的组合,其范围为“全部”。例如:'$(Build.DefinitionName) $(Build.DefinitionVersion) $(Build.BuildId) $(Build .BuildNumber) $(My.Variable)'"

所以我猜问题是在管道期间创建的这个变量没有 All 的范围。

然后我尝试向“GitVersion.MajorMinorPatch”的管道添加一个管道变量,希望这是在正确的范围内,并希望当“task.setvariable”命令运行时,这会将这个变量值设置得更高范围变量。

在此处输入图片说明

但是在这种情况下,我只是创建了一个标签“v”。

所以我有点卡住了。不知何故,我需要能够在范围 ALL 上动态创建或设置一个变量,并使用我想在此处标记的值。

我真的很感激对此的任何想法。

gitversion azure-devops azure-pipelines

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

如何从另一个模块中的函数全局导入 Powershell cmdlet?

我在从另一个模块中的函数全局导入 cmdlet 时遇到问题。

这是这种情况。假设我试图调用Test-Method一个 dll。当我运行时Import-Module <dll path>,一切正常,我可以Test-Method毫无问题地调用。

然后我把命令放到一个函数中,以简化使用。现在我有类似的东西:

function Import-Cmdlets
{
    Import-Module "<dll path>" -Scope Global -Force
}
Run Code Online (Sandbox Code Playgroud)

现在在 Powershell 中我调用Import-Cmdlets,然后我可以Test-Method毫无问题地调用。

然而,当我把函数到PSM1文件,并导入模块上的PSM1文件,我找不到Test-Method

现在我有一个mymodule.psm1包含以下内容的文件:

function Import-Cmdlets
{
    Import-Module "<dll path>" -Scope Global -Force
}
Run Code Online (Sandbox Code Playgroud)

然后在 PowerShell 中我运行:

Import-Module mymodule.psm1 -Force
Import-Cmdlets
Run Code Online (Sandbox Code Playgroud)

现在我找不到Test-Method更多了。我运行时会显示 dll Get-Module,我可以Test-Method从 ExportedCommands 中看到。但我无法访问它。

这只发生在 dll 导入中。我试过用psm1文件替换dll路径,没有遇到这个问题。

什么是解决此问题的好方法或解决方案?

powershell

5
推荐指数
1
解决办法
1796
查看次数