小编mkl*_*nt0的帖子

Get-Aduser -Filter不接受变量

我想检查系统中是否已存在用户帐户.

$SamAc = Read-Host 'What is your username?'
$User = Get-ADUser -Filter {sAMAccountName -eq "$SamAc"}
Run Code Online (Sandbox Code Playgroud)

我不确定为什么,但$User即使{sAMAccountName -eq "$SamAc"}应该是真的,也总会返回null .

我在这里错过了什么?

编辑:

这是缺少的:

$User = Get-ADUser -Filter "sAMAccountName -eq '$SamAc'"
Run Code Online (Sandbox Code Playgroud)

编者按:脚本块({ ... })用替换字符串.

powershell filtering active-directory powershell-3.0

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

在Mac OS(OS X)中登录时启动shell脚本

我有这个shell脚本Test.sh:

#! /bin/bash

FILE_TO_CHECK="/Users/test/start.txt"
EXIT=0

while [ $EXIT -eq 0 ]; do
    if [ -f "$FILE_TO_CHECK" ]
        then
        /usr/bin/java -jar myapp.jar
        EXIT=1
    else
        sleep 30
    fi
done
Run Code Online (Sandbox Code Playgroud)

我需要在登录后自动启动此脚本.
所以我把它放在一个文件夹Test/System/Library/StartupItems/

当我重新启动Mac时,登录后没有任何反应.有任何线索吗?

我也尝试过Automator,但结果相同:java程序没有运行.

macos bash shell

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

处理生产配置中的密码以进行自动部署

我在这里看到了相关的问题,但它们似乎并没有完全回答我的需要.

我们使用Powershell脚本来部署我们的应用程序,并且大多数环境(UAT等)的配置文件中的密码等信息都是纯文本.这不是一个大问题,但是当谈到PREPROD和PROD时,这是一个大问题.因此我们在配置中有一些标记,如"{{prompt-password}}",它将提供登录对话框(Get-Credential),进行部署的人员可以输入凭证并继续部署.

但这对自动部署没有实际帮助(意味着通过TeamCity等工具一键部署)

我应该使用非对称加密(http://msdn.microsoft.com/en-us/library/as0w18af.aspx),其中密码使用公钥加密,在配置中输入,并存储私钥(如上所述)这里http://msdn.microsoft.com/en-us/library/tswxhw92.aspx)在"代理"中(如在TeamCity将触发部署的VM中,并且具有受限访问权限)运行自动部署并且可以解密密码?在密码学和东西上并不是很强大,但这听起来像是要走的路吗?还有其他建议吗?人们如何处理这种自动部署?


更新:

好的,我已经完成并实施了它.我在C#中编写了一个使用Crypography库的控制台应用程序.该应用程序生成密钥:

RSACryptoServiceProvider rsa = GetRsa(containerName);
File.WriteAllText("keys.kez",rsa.ToXmlString(true));
Run Code Online (Sandbox Code Playgroud)

我也拿出了公钥:

File.WriteAllText("public.pke", rsa.ToXmlString(false));
Run Code Online (Sandbox Code Playgroud)

将公钥提供给必须加密密码并要求他们在配置中输入密码的任何人.将keys.kez文件放在必须运行部署的任何代理中.

c# deployment powershell configuration production-environment

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

/ bin/sh ^ M:错误的解释器:没有这样的文件或目录

当我在终端中输入brew doctor(或任何brew命令)时,我将其作为响应:

-bash:/ usr/local/bin/brew:/ bin/sh ^ M:错误的解释器:没有这样的文件或目录

之前我已经看过^M响应,我认为它与dos行结束文件有关.有没有办法来解决这个问题?

macos bash terminal homebrew

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

我如何从powershell脚本调用sc创建

我想sc create从powershell脚本调用.这是代码.

function Execute-Command
{
    param([string]$Command, [switch]$ShowOutput=$True)
    echo $Command
    if ($ShowOutput) {
        Invoke-Expression $Command
    } else {
        $out = Invoke-Expression $Command
    }
}

$cmd="sc create `"$ServiceName`" binpath=`"$TargetPath`" displayname=`"$DisplayName`" "
Execute-Command -Command:$cmd
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

Set-Content : A positional parameter cannot be found that accepts argument 'binpath=...'.
At line:1 char:1
Run Code Online (Sandbox Code Playgroud)

问题是什么?什么是位置参数?

powershell alias sc.exe

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

从xml文件中删除注释并将其打印出来

我有这个巨大的xml文件,其中包含很多注释.

什么是"最好的方法"去掉所有的评论并从linux命令行很好地格式化xml?

xml bash sh

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

如何在JavaScript中获得以前关注的元素?

我有一个包含多个文本输入的HTML表单.我希望在按下"清除"按钮之前清除具有焦点的元素.如何在JavaScript中获取该元素?

注意:重新考虑将评论考虑在内.

html javascript

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

使用Format-Table控制列宽

我试图从列表中获取一些PC的最后重启时间.我用的时候

foreach ($pc in $pclist) {
  Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pc |
    select csname, lastbootuptime 
}
Run Code Online (Sandbox Code Playgroud)

输出如下.

csname       lastbootuptime
------       --------------
CONFA7-L1-1A 7/15/2016 9:55:16 AM
CONFA7-L1-1F 5/31/2016 8:51:46 AM
CONFA7-L1-1G 6/18/2016 11:09:15 AM
CONFA7-L1... 6/26/2016 5:31:31 PM
CONFA7-L3... 7/24/2016 3:48:43 PM

哪个很整洁,但如果PC名称很长,我无法看到全名.所以我流水线Format-Table:

Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pc |
  select csname, lastbootuptime |
  Format-Table  -HideTableHeaders 
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

CONFA7-L1-1A 7/15/2016 9:55:16 AM



CONFA7-L1-1E 7/21/2016 12:58:16 PM



CONFA7-L1-1F 5/31/2016 8:51:46 AM

这里有两个问题.

  1. 没有标题.如果我删除-HideTableHeaders将有标题为每个输出不需要.

  2. 中间有很多空白区域.

基本上我只需要获得类似于第一个的输出,但不要截断全名.我该如何解决这些问题?

powershell formatting formattable

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

Powershell 6 的哪个库包含 get-wmiobject 命令?

尝试get-WmiObject在 PowerShell(版本 6)中使用该命令时出现以下错误:

PS C:\Users\zsofi> Get-WmiObject Win32_product | select name, packagecache

Get-WmiObject : The term 'Get-WmiObject' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Get-WmiObject Win32_product | select name, packagecache
+ ~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-WmiObject:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException`
Run Code Online (Sandbox Code Playgroud)

powershell wmi cim powershell-core

13
推荐指数
2
解决办法
6778
查看次数