标签: powershell

拆分路径并仅取出最后一部分(文件名)Powershell

我对 powershell 很陌生,我目前正在尝试编写一个脚本,该脚本在文件中查找引用的文件路径,仅取出路径的最后一部分(文件名)并将其移动到与包含它的文件夹相同的目标位置。

我有一个功能脚本可以做我想要的,唯一剩下的就是它不应该寻找引用文件的整个路径。因为路径不再正确。它应该只查找文件名并找到并移动它。

这是我当前的脚本:

    $source      = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'
$destination = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\24BHD'
$toDelete    = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\ToDelete'
$pattern1    = 'AmbulatoryBloodPressure'
$pattern2    = 'RuheEKG'


# Erstellt Array mit pfad und filename
$allFiles = @(Get-ChildItem $source -File | Select-Object -ExpandProperty FullName)

foreach($file in $allFiles) {
    # Dateinhalt als Array
    $content = Get-Content -Path $file

    # Wählt Destinationspfad
        if ($content | Select-String -Pattern $pattern1 -SimpleMatch -Quiet)  
         {
        $dest = $destination
    }
    else {
        $dest = $toDelete
    }

    # Prüft ob Datei einen Pfad enthält
    $refCount = …
Run Code Online (Sandbox Code Playgroud)

string powershell parsing split

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

通过 Powershell 脚本运行 python 脚本

我有一个 python 脚本,我可以使用以下代码通过 PowerShell 运行它:

cd User\PythonScripts
python TestFile.py
Run Code Online (Sandbox Code Playgroud)

现在我想通过 PowerShell 脚本(记事本文件并将其另存为 ps1文件)。

我用谷歌搜索了很多,但我找不到答案,但我认为它应该是这样的:

$path = 'C:\User\PythonScripts'
$file = 'TestFile.py
Run Code Online (Sandbox Code Playgroud)

我想我仍然想念对 python 的引用(所以它知道他需要哪个程序)。我需要怎么做?

python powershell

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

具有命名空间的 PowerShell XML 选择节点

我正在尝试从 XML 文件中选择节点,但遇到了似乎由命名空间引起的问题。

下面的代码不返回任何内容。但是如果我从 XML 文件中删除命名空间,我会得到预期的结果。

移动电源

$StandaloneXML = "test.xml"
# Load XML content
$NewStandaloneXML = New-Object -TypeName "System.XML.XMLDocument"
$NewStandaloneXML.Load($StandaloneXML)
# Get namespace
$Namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $NewStandaloneXML.NameTable
$Namespace.AddNamespace("jboss", $NewStandaloneXML.DocumentElement.NamespaceURI)
$NewStandaloneXML.SelectNodes("jboss:server/interfaces/interface", $Namespace)
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" ?>
<server xmlns="urn:jboss:domain:4.2">
  <interfaces>
      <interface name="management">
          <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
      </interface>
      <interface name="public">
          <inet-address value="${jboss.bind.address:127.0.0.1}"/>
      </interface>
  </interfaces>
</server>
Run Code Online (Sandbox Code Playgroud)

预期输出

名称 inet 地址
---- ------------
管理 inet-address
公网地址

xml powershell xpath namespaces xml-namespaces

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

该字符串不是有效的正则表达式

我有一个包含 DNS .zone 文件的文件夹。

我试图返回所有文件和 IP 地址看起来像172.20.*.

我使用以下内容:

Get-ChildItem -Recurse -Path 'C:\Root' | Select-String -Pattern '*172.20.*' | group | select name
Run Code Online (Sandbox Code Playgroud)

但这会返回:

Select-String :字符串 *172.20.* 不是有效的正则表达式:解析 "*172.20.*" - 量词 {x,y} 不接任何内容。

我尝试-SimpleMatch在我的案例中使用这个案例Select-String但没有成功。将字符串括在双引号中也不起作用。

如果我使用实际文本作为我的模式,它可以毫无问题地工作。

我的问题在哪里?

regex powershell

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

如何将十进制转换为十六进制变量?

我有很多文件 bmp 和 jpg,需要提取没有扩展名的文件名,在前面写一个特定的文本,在后面写一个十六进制变量,然后把它放在一个名为的文本文件中 list.txt

例如,文件是:picture1.bmp, picture2.spr,picture3.bmp

我提取没有扩展名的文本名称,在特定文本之前和提取名称之后放置一个十六进制变量,因此它在以下位置完成list.txt

abc picture1 0x7f020000

abc picture2 0x7f020001

abc picture3 0x7f020002
Run Code Online (Sandbox Code Playgroud)

我不知道如何写入十六进制字符串,list.txt因为我的脚本将其转换为 base10。

我的脚本创建list.txt如下:

abc picture1 2130837504

abc picture2 2130837505

abc picture3 2130837503
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

$a=".field public static final "

$b=":I = "

$c= 0x7f01ffff

Get-ChildItem -Recurse -Include *.bmp,*.spr | ForEach-Object {$a+$_.BaseName+$b+(++$c)} | Out-File list.txt
Run Code Online (Sandbox Code Playgroud)

powershell

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

Set-AzStorageBlobContent 抛出异常:路径中存在非法字符

我正在将 Azure 部署脚本从 AzureRM 迁移到 Az,新模块似乎无法打开文件。

有任何想法吗?

我尝试用正斜杠替换反斜杠;我什至从脚本所在的文件夹中调用它,所以我不需要将完整的文件名传递给它,它会正确地将其解析为全名,但仍然无法打开它。

PS C:\dev\pq\service\scripts\azure\NestedTemplates> Set-AzStorageBlobContent -Container "florin-container" -Context $storageAccount.Context -File ApplicationInsights.json
Set-AzStorageBlobContent : Failed to open file C:\dev\pq\service\scripts\azure\NestedTemplates\ApplicationInsights.json: Illegal characters in path..
At line:1 char:1
+ Set-AzStorageBlobContent -Container "florin-container" -Context $stor ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Set-AzStorageBlobContent], TransferException
    + FullyQualifiedErrorId : TransferException,Microsoft.WindowsAzure.Commands.Storage.Blob.SetAzureBlobContentCommand
Run Code Online (Sandbox Code Playgroud)

2/13/19 更新:

我创建了一个非常简单的测试用例场景,在我们更大的脚本套件之外,可以很容易地重现问题。我在 c:\ 中放置了一个名为 test.json 的文件,它包含一个空的 json 对象,只有花括号,如下面的输出所示。我正在使用 AzureRM 别名方案:

PS C:\> type test.json
{}
PS C:\> type C:\test.json
{}
PS C:\> Enable-AzureRmAlias
PS C:\> $sa = Get-AzureRmStorageAccount …
Run Code Online (Sandbox Code Playgroud)

powershell azure azure-storage

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

Powershell 数组到文本文件

我从 Powershellbros.com 借用了代码,该代码显示请求的数据在输出窗格中正确返回,但我想将其输出到 txt 文件。

我从https://www.powershellbros.com/powershell-tip-of-the-week-get-sccm-client-version-remotely/获得了代码,并且想要更好的格式版本。我结束脚本的方式创建了文件,但其中没有任何内容 (1KB)。

if ($Array) {
    return $Array 
}
& $Array Out-File -Append c:\temp\Version.txt
Run Code Online (Sandbox Code Playgroud)

powershell formatting

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

使用 Get-IISAppPool 并在同一会话中创建新应用程序池时出现的奇怪问题

如果我传入的应用程序池不存在,我正在编写一个脚本来创建一个新的应用程序池。创建池并在同一会话中运行 Get-IISAppPool 时,新的应用程序池不存在。

这是复制它的方法。

New-WebAppPool -Name "Test" Get-IISAppPool

它不会显示创建的新的。

如果您打开一个新 shell 并运行 Get-IISAppPool,您将看到新的应用程序池。

关于如何克服这个问题的任何想法?

iis powershell

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

Azure Powershell(Az 模块)获取公共 IP 地址

使用 Azure 的新 Az 模块,是否有人拥有使用名称获取 Azure VM 公共 IP 地址的语法?commandletGet-AzPublicIpAddress没有 VM 名称的参数,只有 IP 对象名称

这有效,但我在这里没有使用机器名称,它是 IP 对象本身的名称:

$CurrentIp = (Get-AzPublicIpAddress -ResourceGroupName 'RG1' -Name 'MyVMname-ip').IpAddress
Run Code Online (Sandbox Code Playgroud)

我不知道如何从 VM 对象中获取它,即这不起作用:

Get-AzVM -ResourceGroupName 'RG1' -Name 'MyVMname' | Get-AzPublicIpAddress
Run Code Online (Sandbox Code Playgroud)

powershell azure azure-powershell

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

Powershell 启动进程 VS 调用项

Start-Process和 和有Invoke-Item什么区别?我注意到你不能Invoke-Item chrome。我认为这Invoke-Item是专门针对具有给定文件路径的文件。但是使用Invoke-Item而不是有什么好处吗Start-Process(除了打字ii比打字快start)?

powershell start-process

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