我几天前已经开始学习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返回每个匹配文件的路径和名称.
如何获取包含我要查找的表达式的文件的名称和位置?
我是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因为那只是一个例子而得到了一些东西.很多豆荚有很多不同的名字,这只是一个例子.
谢谢!
我只需要知道如何制作一个接受最多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) 我需要使用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) 我有一个文本文件,其中包含由空行文本分隔的文本行.我想将该文件的内容推送到一个数组中,并使用空行作为分隔符.我尝试过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可以使用任何字符,不是吗?
或者,如果你有任何技巧可以将一个文件拆分成一个基于空行的分割,我很感兴趣!(为了理解起见,我仍然想深究这一点).
非常感谢,并有一个很好的周末:)
我有以下字符串:
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"的长度从一行到另一行是不同的,斜线字符可以是任何地方.
谢谢 :)
在以下字符串中,
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)
此外,代码必须支持具有多行的文件,并且仅替换每行中的第一个逗号.
我不知道如何用通常的嫌疑人这样做,即Where-Object或Select-Object.
假设我想在PSCustomObject中找到字符串"needle" $Object,并且该对象可以有几个Note属性,例如$Object.Haystack1,$Object.Haystack2等等.
在我的情况下,注释属性的数量是已知的并且是固定的,但是当你不知道对象有多少属性时,我想知道如何处理更难的情况.
我和Select/ Where-Object和操作员一起探索,-in但没有设法制作一个简单,优雅的衬里来完成这项工作.
我正在尝试创建一个堆栈(请参阅下面的代码)
但我收到以下错误:
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) 我正在尝试使用 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) 我正在使用PowerShell解析JBOSS日志文件.典型的一行是这样的:2011-12-08 09:01:07,636 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web] .etc ..
我想删除字符1中的所有字符,直到单词ERROR.所以我想删除它之后的日期和时间,昏迷和数字.我希望我的行以ERROR开头,并在此之前删除所有内容.
我看了谷歌并尝试了我发现的不同的东西,但我很挣扎,无法使它工作.我尝试使用substring和replace但是找不到如何删除所有字符,直到单词ERROR.
任何帮助将不胜感激,
非常感谢!
我试图通过.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地址?