我正在尝试使用此代码获取进程的所有者: (Get-WmiObject -class win32_process | where{$_.ProcessName -eq 'explorer.exe'}).getowner() | Foreach-Object user | out-string 这在Windows 8下工作良好,但在Windows 7中,我收到以下消息: ForEach-Object:无法绑定参数'Process'。 无法将“System.String”types的“用户”值转换为键入“System.Management.Automation.ScriptBlock”。 在C:\ Program Files(x86)\ Advanced Monitoring Agent GP \ scripts \ 9660.ps1:1 char:108 +(Get-WmiObject -class win32_process |其中{$ _。ProcessName -eq'explorer.exe'})。 getowner()| Foreach-Object <<<<用户| out-string + CategoryInfo:InvalidArgument:(:) [ForEach-Object],参数BindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand
我有一个运行Busybox的Synology DS412 + NAS机箱,它有一个ash的默认shell。 以前, ipkg install optware-devel已经运行,它安装了bash并将其设置为默认shell。 运行ipkg install zsh已经安装了zsh但没有将其设置为默认的shell。 chsh是不存在的(Busybox假设一个减less系统,只有ash将被使用),那么我如何设置默认的shell? 我会很感激任何帮助或见解。
我有一个名为$ a的数组 echo $a给出: url load — —- win-coll2.astest.org 9 win-coll.astest.org 110 win-coll4.astest.org 110 win-coll5.astest.org 140 win-coll3.astest.org 410 现在我想知道,如果数组包含一个蜇例如: win-coll2.astest.org应该导致true和win-coll7.astest.org应该导致false 有没有一个正确的方法来做到这一点,没有foreach ? 与foreach: $IsInArray = false $ProofString = "win-coll2.astest.org" foreach( $item in $a){ if($item.url -eq $ProofString){ $IsInArray = true } }
我正在使用相同的模式手动执行相同的命令多次手动命令行。 现在我正在寻找一种方法来简化它只需input一次命令。 让我们看看一个普通的docker例子: docker ps docker ps -a docker ps -l docker stop x docker start x docker start y docker logs y docker logs -fz 这个例子也适用于更多的命令,如git,brew,gulp,gcloud。 现在我正在寻找某种命令封装器的shell,它允许我with docker来编写,它将把任何命令封装在嵌套/子shell中。 然后,我不需要预先执行docker命令,只需调用: >ps # does docker ps and displays result >stop x # prepends docker so docker stop x is actually executed CTRL+C # to exit the […]
由于各种原因,我需要启用telnet访问(通过专用networking),当有人试图用特定的用户帐户login(可以说是CheckStatus ),而不是给用户一个shell,而是运行一些非常快速的代码/ script / whatever并返回两个非常特定的string之一。 这个帐户可以有一个密码。 我本质上是试图复制当你尝试SSH到Github的服务器,他们告诉你的shell访问不被授予的情况下会发生什么。 我认为这个解决scheme将取代用户的shell,所以我创build了脚本: #! /bin/bash echo "HI!!!" 然后尝试将其设置为用户的shell通过: test@development-1:~$ chmod +x test.sh test@development-1:~$ chsh Password: Changing the login shell for test Enter the new value, or press ENTER for the default Login Shell [/bin/bash]: /home/test/test.sh chsh: /home/test/test.sh is an invalid shell 任何想法最好的方式来做到这一点? 作为参考,我们的大多数系统是Ubuntu 14.04。
我在使用cmdlet Group-Object遇到问题。 以此为例: PS C:\Windows> get-service | Group-Object -Property status Count Name Group —– —- —– 114 Running {AdobeARMservice, Appinfo, AppMgmt…} 128 Stopped {AdobeFlashPlayerUpdateSvc, AJRouter…} 查看组列如何不显示所有的名称,而是用省略号截断它们。 我知道我可以通过pipe道Select-Object -expandproperty group cmdlet来获得完整列表,但是只输出组列而不是count和name列。 我知道我也可以replace组对象,只是使用format-table -wrap得到与其他列扩大的列表,但我需要计数列,这将不会显示没有Group-Object 。 任何人都知道如何做到这一点,而仍然使用Group-Object ? 这不仅仅是专门用于get-service而是其他我使用group-object东西。 Get-service只是一个任何人都可以涉及到的通用示例。 谢谢。
我正在尝试为我们的人力资源团队生成一份csv报告,列出: 显示名称 主要的smtp地址 SAM帐户 部 标题 办公室 经理 帐户状态(启用,禁用) 设备模型 DeviceOS LastSyncAttemptTime 我的脚本如下: $users = get-aduser -Filter * ` -SearchBase "ou=hr,ou=burbank,ou=corp,dc=corp,dc=castandcrew,dc=com" ` -Properties * | select DisplayName,EmailAddress,samAccountName,Department,Title,Office,Manager,Enabled "DisplayName;EmailAddress;samAccountName;Department;Title;Office;Manager;Enabled;DeviceModel;DeviceOS;LastSyncAttemptTime" foreach ($u in $users) { $a = Get-MobileDeviceStatistics -Mailbox $u.EmailAddress | select DeviceModel,DeviceOS,LastSyncAttemptTime "{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};" -f $u.DisplayName, $u.EmailAddress, $u.samAccountName, $u.Department, $u.Title, $u.Office, $u.Manager, $u.Enabled, $a.DeviceModel, $a.DeviceOS, $a.LastSyncAttemptTime } […]
我试图安装PowerShell 2.0,它告诉我我需要卸载一个较早的版本? 它不在已安装的应用程序列表中,在system32下的windowspowershell \ v1.0目录中没有明显的卸载。
经过我自己的一些Googlesearch/研究,我还没有find明确的答案, 我正在寻找search整个/ var / www / html /文件夹中的“127.0.0.1”,并将其replace为服务器的IP地址(我们正在将数据库从本地框中移出)。 这适用于Localhost&127.0.0.1。 虽然我可以跑 find * | xargs sed -ia/127.0.0.1/ser.ver.ip.addr/g 两次,一旦replace127.0.0.1和本地主机,我宁愿不必运行两个命令。 我能做一个OR语句,而不打破? 就像是: find * | xargs sed -ia/127.0.0.1|localhost/ser.ver.ip.addr/g – – – – – – – – – – – – – – 编辑 – – – – – – – – – – – – 我发现了一个稍微更可靠的search和replace方法, find * […]
如果我在/ etc / profile中执行此操作,它似乎不起作用。 export SHELL="/bin/bash/"