这似乎应该非常简单,但我似乎无法找到方法。
代码
$processName = "notepad.exe"
$filter = "name like '%"+$processName+"'"
$result = Get-WmiObject win32_process -Filter $filter
$res = $result.CommandLine
$res
现在,当我运行上面的代码时,当我在记事本中打开了不同的文件时,我为 $ res 获得了2个不同的输出。那为什么它会给我2个不同的结果?
输出
"notepad.exe" full_file_path
"C:\Windows\system32\NOTEPAD.EXE" full_file_path
当我使用以下代码
按空格分割$res
输出时
$r = $res.Split("",2)
$r1 = $r[0]
$r2 = $r[1]
我得到了
$ R
"C:\Windows\system32\NOTEPAD.EXE"
full_file_path
$ R1
"C:\Windows\system32\NOTEPAD.EXE"
$ R2
full_file_path
现在使用Split-Path获取记事本所在的文件夹,
Split-Path $r1
我得到了
"C:\Windows\system32
而不是
C:\Windows\system32
但是当我跑步时
Split-Path "C:\Windows\system32\NOTEPAD.EXE"
我得到C:\Windows\system32
。那么为什么Split-Path
在作为参数传递变量时会给"C:\Windows\system32
答案 0 :(得分:0)
问题是变量是一个字符串,它包含嵌入的引号,并抛出Split-Path,例如:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="#" class="show_hide" rel="#slidingDiv_1"> Show Datums </a>
<br />
<div id="slidingDiv_1" style="height:300px; padding:20px; margin-top:10px; border-bottom:5px; solid #3399FF; display:none;">
<div class="paginate">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
</ul>
</div>
</div>
<br/>
<a href="#" class="show_hide" rel="#slidingDiv_2"> Show Datums </a>
<br />
<div id="slidingDiv_2" style="height:300px; padding:20px; margin-top:10px; border-bottom:5px; solid #3399FF; display:none;">
<div class="paginate">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
</ul>
</div>
</div>
输出:
$p = '"C:\temp"'
$p
Split-Path $p
尝试此操作以消除引号:
"C:\temp"
"C:\
输出:
$r1 = $r1.Trim('"')
Split-Path $r1