小编Blu*_*luz的帖子

如何在多个文件中搜索字符串并返回Powershell中的文件名?

我几天前已经开始学习powershell了,我在google上找不到任何我需要的东西,所以请忍受我的问题.

我被要求将一些文本字符串替换为多个文件.我不一定知道可能的目标文件的扩展名,也不知道它们的位置.到目前为止,我已经设法以递归方式浏览目录(get-ChildItem -recurse),并使用get-content和select-string查找我正在寻找的字符串:

Get-ChildItem -recurse | Get-Content | Select-String -pattern "dummy"
Run Code Online (Sandbox Code Playgroud)

问题是,我可以看到我正在寻找的文本的出现,但我不知道如何告诉PS返回每个匹配文件的路径和名称.

如何获取包含我要查找的表达式的文件的名称和位置?

string powershell recursion search text

279
推荐指数
10
解决办法
31万
查看次数

使用kubectl查找新pod的名称

我是k8s的新手,我在这里遇到了一个小问题.

这是上下文:我需要kubectl delete [podname]每天通过crontask 调用一次,并等到k8s重新创建pod,然后登录该pod中的容器并运行shell命令.

所以我查询部署并得到这样的东西:

user@host:~$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
firstpod-123456789-something           1/1       Running   570        2d
secondpod-http-backend-something       1/1       Running   597        2d
Run Code Online (Sandbox Code Playgroud)

然后我写了一个bash脚本,它会在5分钟的时间间隔内删除pod.这很容易.

假设我调用kubectl delete firstpod-123456789-something并等待k8s重新创建一个新的pod.那个新的pod会有一个新的名字firstpod-[some random hash here]-something

问题是我需要在我的bash脚本中捕获该pod的名称,这样我就可以在该pod中执行命令,uname -a或者无论如何验证新pod已启动并运行正常.

我用谷歌搜索并阅读了kubectl文档,但我认为通过bash脚本有一种简单的方法可以做到这一点?我假设在这里获取pod名称的唯一方法是通过k8s API?

我很高兴在这一点上使用任何解决方案.我想知道当k8s产生新的pod时,我是否有任何重命名新pod的方法?所以我可以grep一个特定的关键字?

请注意,我不想firstpod-[0-9]-something因为那只是一个例子而得到了一些东西.很多豆荚有很多不同的名字,这只是一个例子.

谢谢!

kubectl

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

bash获得最多2位数的正则表达式

我只需要知道如何制作一个接受最多2位数字的正则表达式

我现在所拥有的只是

^[0-9]{2}$
Run Code Online (Sandbox Code Playgroud)

这将匹配一个正好2位数的数字,但我不知道如何指定"匹配一个最多2位数的数字".

此外,如果有办法确保这个数字不是0那么这将是一个加号,否则我可以检查与Bash.

谢谢 !:)

请注意,输入变量来自读取-p"make a choice"Number

编辑我的帖子 - 在背景中显示代码:

while true; do
    read -p "Please key in the number of the engineer of your choice, or leave empty to select them all: " Engineer
    if [ -z "$Engineer" ]; then
        echo "No particular user specified, all engineers will be selected."
        UserIdSqlString="Transactions.Creator!=0 "
        break
    else
        if [[ $Engineer =~ ^[0-9]{1,2}$ && $Engineer -ne 0 ]]; then
            echo "If you want a specific engineer type their number otherwise …
Run Code Online (Sandbox Code Playgroud)

regex bash digit

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

使用PowerShell在网页中查找特定句子

我需要使用powershell通过whois解析IP地址.我的公司过滤端口43和WHOIS查询,因此我必须使用的解决方法是让powershell使用https://who.is等网站,读取http流并查找与IP地址匹配的组织名称.

到目前为止,我已经设法将网页读入PowerShell(例如,在yahoo.com上使用WHOIS),这是https://who.is/whois-ip/ip-address/206.190.36.45

所以这是我的片段:

$url=Invoke-WebRequest https://who.is/whois-ip/ip-address/206.190.36.45
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做:

$url.gettype()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    HtmlWebResponseObject                    Microsoft.PowerShell.Commands.WebResponseObject
Run Code Online (Sandbox Code Playgroud)

我看到这个对象有几个属性:

Name              MemberType Definition
----              ---------- ----------
Equals            Method     bool Equals(System.Object obj)
GetHashCode       Method     int GetHashCode()
GetType           Method     type GetType()
ToString          Method     string ToString()
AllElements       Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection AllElements {get;}
BaseResponse      Property   System.Net.WebResponse BaseResponse {get;set;}
Content           Property   string Content {get;}
Forms             Property   Microsoft.PowerShell.Commands.FormObjectCollection Forms {get;}
Headers           Property   System.Collections.Generic.Dictionary[string,string] Headers {get;}
Images            Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection Images {get;}
InputFields       Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection InputFields …
Run Code Online (Sandbox Code Playgroud)

string powershell

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

基于空行或任何未使用的字符将文本文件拆分为数组

我有一个文本文件,其中包含由空行文本分隔的文本行.我想将该文件的内容推送到一个数组中,并使用空行作为分隔符.我尝试过IFS ="\n"(或"\ r \n"等等),但无法让它工作,所以相反我以为我会用不在文件中的字符替换任何空行,所以我拿起西班牙语倒置问号(\ xBF)

sed 's/^$/'$(echo -e "\xBF")'/'))
Run Code Online (Sandbox Code Playgroud)

所以这有用,我有一个角色,我将用它来切片我的文件并把它放入一个数组.(一点随机技巧,但嘿,这只是一种方式做到这一点..)

现在我需要更改$ IFS,因此它将使用反转的问号来切割数组的数据.

如果我输入

IFS=$(echo -e "\xBF")
Run Code Online (Sandbox Code Playgroud)

在命令行中它工作得很好

 echo "$IFS"
¿
Run Code Online (Sandbox Code Playgroud)

但是如果我用尾随读取-a键入该命令,那么它什么都不做:

[user@machine ~]$ IFS=$(echo -e "\xBF") read -a array <<< "$var"
[user@machine ~]$ echo "$IFS"
[user@machine ~]$
Run Code Online (Sandbox Code Playgroud)

所以这很奇怪,因为$ var有一个值.

更令人惊讶的是,当我得到IFS之后立即验证IFS的价值时:

[user@machine ~]$ echo -n "$IFS" | od -abc
0000000  sp  ht  nl
    040 011 012
         \t  \n
0000003
[user@machine ~]$ 
Run Code Online (Sandbox Code Playgroud)

这是IFS的默认值.

我很确定IFS可以使用任何字符,不是吗?

或者,如果你有任何技巧可以将一个文件拆分成一个基于空行的分割,我很感兴趣!(为了理解起见,我仍然想深究这一点).

非常感谢,并有一个很好的周末:)

arrays bash ascii echo ifs

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

替换字符串中最后出现的字符

我有以下字符串:

01/01/2014 blbalbalbalba blabla/blabla

我想用空格替换最后一个斜杠,并在日期中保留前两个斜杠.

我提出的最接近的事情是这样的事情:

PS E:\> [regex] $regex = '[a-z]'
PS E:\> $regex.Replace('abcde', 'X', 3)
XXXde
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从终点开始.任何帮助将不胜感激.

编辑我的问题以澄清:我只想用空格字符替换最后一个斜杠字符,因此:

01/01/2014 blbalbalbalba blabla/blabla成为01/01/2014 blbalbalbalba blabla blabla

知道"blabla"的长度从一行到另一行是不同的,斜线字符可以是任何地方.

谢谢 :)

regex string powershell replace special-characters

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

替换PowerShell中字符串中的第一个匹配字符

在以下字符串中,

apache:x:48:48:Apache:/var/www:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

我怎么能用逗号替换第一个冒号(只有这个冒号)所以我会得到以下字符串?

apache,x:48:48:Apache:/var/www:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

此外,代码必须支持具有多行的文件,并且仅替换每行中的第一个逗号.

regex string powershell comma export-to-csv

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

根据对象的值搜索对象中的未知属性

我不知道如何用通常的嫌疑人这样做,即Where-ObjectSelect-Object.

假设我想在PSCustomObject中找到字符串"needle" $Object,并且该对象可以有几个Note属性,例如$Object.Haystack1,$Object.Haystack2等等.

在我的情况下,注释属性的数量是已知的并且是固定的,但是当你不知道对象有多少属性时,我想知道如何处理更难的情况.

我和Select/ Where-Object和操作员一起探索,-in但没有设法制作一个简单,优雅的衬里来完成这项工作.

string powershell search psobject

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

ec2 实例缺少 Cloudformation DeletionPolicy 策略

我正在尝试创建一个堆栈(请参阅下面的代码)

但我收到以下错误:

There was an error creating this change set.
The following resources to import [masterinstance] must have DeletionPolicy attribute specified in the template.
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题。我尝试在 InstanceType 定义下添加"DeletionPolicy": "Retain",但这不正确。

"InstanceType": {

  "Description": "EC2 instance type for the node instances",

  "Type": "String",
  "Default": "t3.micro",
  "DeletionPolicy": "Retain",
Run Code Online (Sandbox Code Playgroud)

有人可以解释我做错了什么以及如何更改模板吗?

非常感谢。

模板:

{

  "AWSTemplateFormatVersion" : "2010-09-09",

  "Description" : "Template to create a RHEL8 instances for testings",

  "Parameters": {

    "instanceName": {

      "Description": "The instance name.",

      "Type": "String"

    },

    "Subnet": {

      "Description": "The subnets where …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cloudformation

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

icacls 从 ACL 中删除所有组

我正在尝试使用 icacls 修改文件上的 ACL。我希望该文件由管理员拥有并且只能由管理员访问。我找到了如何使管理员成为文件的所有者,并且我知道如何从安全列表中删除组,但我不知道如何删除除管理员组之外的所有组(如果我不知道该组的名称)其他团体。

我正在寻找一种方法来告诉 Windows 我只想让管理员访问该文件并删除任何其他用户/组(如果有)。

我尝试使用通配符,但它不起作用。

这是我的脚本:

$domain     = [Environment]::UserDomainName
$user       = [Environment]::UserName
icacls $myinvocation.mycommand.path /setowner "$domain\$user" /T
icacls $myinvocation.mycommand.path /grant "$domain\$user"

icacls $myinvocation.mycommand.path
Run Code Online (Sandbox Code Playgroud)

acl powershell-2.0

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

powershell删除行的第一个字符

我正在使用PowerShell解析JBOSS日志文件.典型的一行是这样的:2011-12-08 09:01:07,636 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web] .etc ..

我想删除字符1中的所有字符,直到单词ERROR.所以我想删除它之后的日期和时间,昏迷和数字.我希望我的行以ERROR开头,并在此之前删除所有内容.

我看了谷歌并尝试了我发现的不同的东西,但我很挣扎,无法使它工作.我尝试使用substring和replace但是找不到如何删除所有字符,直到单词ERROR.

任何帮助将不胜感激,

非常感谢!

powershell character line

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

如何使用Powershell获取AWS Auto Scaling组中实例的IP地址?

我试图通过.NET Amazon API将powershell脚本连接到Auto Scaling组.

我在这里检查了文档,但是我很难获得一个包含属于Auto Scaling Group的实例的IP地址的对象.

我不确定使用哪个类,或者哪个类包含我的对象.

我目前正在使用:

$request = New-Object -TypeName Amazon.AutoScaling.Model.DescribeAutoScalingInstancesRequest
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过同样的情况?哪个类/对象包含AutoScaling组中运行的实例的IP地址?

powershell amazon-ec2 amazon-web-services aws-powershell

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